Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按组聚合并获取不同data.frame列的非NA值的计数、平均值和sd_R_Aggregate_Missing Data - Fatal编程技术网

按组聚合并获取不同data.frame列的非NA值的计数、平均值和sd

按组聚合并获取不同data.frame列的非NA值的计数、平均值和sd,r,aggregate,missing-data,R,Aggregate,Missing Data,我在通过下面的函数按组计算非缺失值时遇到一些困难(该函数还提供sd和平均值): test这里有一个数据。表方法: 数据 您拥有的数据很难读入R中-请使用dput()等,以便其他人更容易读入: > dput(dt) structure(list(someting = c("503", "553", "599", "647", "695", "728", "760", "793", "826", "859", "907", "955", "1003", "1036", "1084", "1

我在通过下面的函数按组计算非缺失值时遇到一些困难(该函数还提供sd和平均值):


test这里有一个
数据。表
方法:

数据

您拥有的数据很难读入R中-请使用
dput()
等,以便其他人更容易读入:

> dput(dt)
structure(list(someting = c("503", "553", "599", "647", "695", 
"728", "760", "793", "826", "859", "907", "955", "1003", "1036", 
"1084", "1131", "1179", "1226", "1274", "1322", "1355", "1402", 
"1450", "1497", "1545"), treatment = c("gr.2", "gr.2", "gr.2", 
"gr.2", "gr.2", "gr.2", "gr.2", "gr.2", "gr.2", "gr.2", "gr.2", 
"gr.3", "gr.3", "gr.3", "gr.3", "gr.3", "gr.3", "gr.3", "gr.3", 
"gr.3", "gr.3", "gr.3", "gr.3", "gr.4", "gr.4"), var1 = c(8, 
NA, 3, 3, NA, NA, NA, NA, NA, 8, 8, 8, NA, 8, 8, 8, 8, 8, 8, 
NA, 8, 8, 8, 8, NA), var2 = c(8L, 8L, 8L, 8L, NA, NA, NA, NA, 
NA, 8L, 8L, 8L, NA, 8L, 8L, 8L, 8L, 8L, 8L, NA, 8L, 8L, 8L, 8L, 
NA)), .Names = c("someting", "treatment", "var1", "var2"), row.names = c(NA, 
-25L), class = c("data.table", "data.frame"))
代码

dt[, .(var1.n = sum(!is.na(var1)),
       var2.n = sum(!is.na(var1)), 
       var1.mean = mean(var1, na.rm = T), 
       var2.mean = mean(var2, na.rm = T)), 
   by = .(treatment)]
输出

      treatment var1.n var2.n var1.mean var2.mean
1:      gr.2      5      5         6         8
2:      gr.3     10     10         8         8
3:      gr.4      1      1         8         8

由于某种原因,“veh”条目没有被读入。因此,输出略有不同,但原理应该清楚

如果你提供一个示例输入和所需的输出,你会更容易得到帮助。我输入的数据只是一个例子,我的实际数据大约有40个变量。这就是为什么我尝试使用聚合和函数(x)。您的代码需要我为n、mean和sd单独创建一行代码,这太麻烦了。对于这些繁琐的数据,我深表歉意-下次将使用dput。@Jbnimble您可以参考此处发布的多栏作业答案。可以使用
colnames(dt)
上的
lappy
创建具有新列名的向量,并且可以从函数调用或答案中指定的任何其他方法获得值。
      treatment var1.n var2.n var1.mean var2.mean
1:      gr.2      5      5         6         8
2:      gr.3     10     10         8         8
3:      gr.4      1      1         8         8