gpt4 book ai didi

r - 更改 R 中数据框列表中的列值

转载 作者:行者123 更新时间:2023-12-04 20:31:28 25 4
gpt4 key购买 nike

我有一个包含 12 个数据框的列表。列表的名称是 kvish_1_10t.tables .每个数据帧都有一列“day_mean”(在所有数据帧中总是第 7 列)。重要的是要说所有数据帧看起来完全一样。这是其中一个表的示例:

 X2014_kvish_1_10t
kvish keta maslul yom nefah date day_mean
1 1 10 1 1 1936 2014-09-07 00:00:00 2910.958
2 1 10 1 1 966 2014-09-07 01:00:00 2910.958
3 1 10 1 1 737 2014-09-07 02:00:00 2910.958
4 1 10 1 1 596 2014-09-07 03:00:00 2910.958
5 1 10 1 1 479 2014-09-07 04:00:00 2910.958
6 1 10 1 1 765 2014-09-07 05:00:00 2910.958
7 1 10 1 1 2082 2014-09-07 06:00:00 2910.958
8 1 10 1 1 3624 2014-09-07 07:00:00 2910.958
9 1 10 1 1 3847 2014-09-07 08:00:00 2910.958
10 1 10 1 1 2960 2014-09-07 09:00:00 2910.958
11 1 10 1 1 2871 2014-09-07 10:00:00 2910.958
12 1 10 1 1 3149 2014-09-07 11:00:00 2910.958
13 1 10 1 1 3615 2014-09-07 12:00:00 2910.958
14 1 10 1 1 3943 2014-09-07 13:00:00 2910.958
15 1 10 1 1 4079 2014-09-07 14:00:00 2910.958
16 1 10 1 1 4856 2014-09-07 15:00:00 2910.958
17 1 10 1 1 5010 2014-09-07 16:00:00 2910.958
18 1 10 1 1 4783 2014-09-07 17:00:00 2910.958
19 1 10 1 1 4684 2014-09-07 18:00:00 2910.958
20 1 10 1 1 4478 2014-09-07 19:00:00 2910.958
21 1 10 1 1 3610 2014-09-07 20:00:00 2910.958
22 1 10 1 1 2799 2014-09-07 21:00:00 2910.958
23 1 10 1 1 2346 2014-09-07 22:00:00 2910.958
24 1 10 1 1 1648 2014-09-07 23:00:00 2910.958
25 1 10 1 2 1145 2014-09-08 00:00:00 2745.917
26 1 10 1 2 671 2014-09-08 01:00:00 2745.917
...
168 rows total


现在,我更改了“day_mean”列(右侧的 7 列),因此 1, 25 ,49 ,73, 97 ,121, 145 位置的值seq(1, 168, 24) place 将保持原样,其余的将成为 NA's 。所以我写这个来定义一个数字向量,它代表“day_mean”列中的位置,这些位置将获得 NA 值:
aa = seq(1, 168 , 24) 
bb = rep(T, 168)
bb[aa] = F
cc= (which(bb))


X2014_kvish_1_10t[,7][cc] = NA

现在,如您所见,我更改了“day_mean”列,因此只有相关值将保持原样,其余值将变为 NA。像这儿:

> X2014_kvish_1_10t
kvish keta maslul yom nefah date day_mean
1 1 10 1 1 1936 2014-09-07 00:00:00 2910.958
2 1 10 1 1 966 2014-09-07 01:00:00 NA
3 1 10 1 1 737 2014-09-07 02:00:00 NA
4 1 10 1 1 596 2014-09-07 03:00:00 NA
5 1 10 1 1 479 2014-09-07 04:00:00 NA
6 1 10 1 1 765 2014-09-07 05:00:00 NA
7 1 10 1 1 2082 2014-09-07 06:00:00 NA
8 1 10 1 1 3624 2014-09-07 07:00:00 NA
9 1 10 1 1 3847 2014-09-07 08:00:00 NA
10 1 10 1 1 2960 2014-09-07 09:00:00 NA
11 1 10 1 1 2871 2014-09-07 10:00:00 NA
12 1 10 1 1 3149 2014-09-07 11:00:00 NA
13 1 10 1 1 3615 2014-09-07 12:00:00 NA
14 1 10 1 1 3943 2014-09-07 13:00:00 NA
15 1 10 1 1 4079 2014-09-07 14:00:00 NA
16 1 10 1 1 4856 2014-09-07 15:00:00 NA
17 1 10 1 1 5010 2014-09-07 16:00:00 NA
18 1 10 1 1 4783 2014-09-07 17:00:00 NA
19 1 10 1 1 4684 2014-09-07 18:00:00 NA
20 1 10 1 1 4478 2014-09-07 19:00:00 NA
21 1 10 1 1 3610 2014-09-07 20:00:00 NA
22 1 10 1 1 2799 2014-09-07 21:00:00 NA
23 1 10 1 1 2346 2014-09-07 22:00:00 NA
24 1 10 1 1 1648 2014-09-07 23:00:00 NA
25 1 10 1 2 1145 2014-09-08 00:00:00 2745.917
26 1 10 1 2 671 2014-09-08 01:00:00 NA
27 1 10 1 2 497 2014-09-08 02:00:00 NA
...
168 rows total


到目前为止一切顺利,但是当我尝试对列表中的所有数据帧执行相同的操作时,它失败了。我尝试编写以下命令,但效果不佳,我创建了一个函数,每个数据帧中的所有 7 列都将获得新值:
func = function(x) (x[,7][cc] = NA)

lapply(kvish_1_10t.tables, func)

如何更改我所有的 day_mean 每个数据框中的列?

最佳答案

只需添加一个 return()在您的功能中:

func <- function(X) {
X[,7][cc] <- NA

return(X)
}

new_df_list <- lapply(kvish_1_10t.tables, func)

关于r - 更改 R 中数据框列表中的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45315338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com