R 如何使用ColSums
我有上面的data.frame^。我正在尝试创建一个新的data.frame,它只是每列的总和R 如何使用ColSums,r,dataframe,sum,R,Dataframe,Sum,我有上面的data.frame^。我正在尝试创建一个新的data.frame,它只是每列的总和 G1G2Effect WEIGHT2 Sim1 Sim2 Sim3 Sim4 Sim5 Sim6 Sim7 Sim8 Sim9 Sim10 Sim11 Sim12 1 -0.0312 2.833103 -0.0312 -0.0312 0.0000 -0.0312 0.0312 0.0000 -0.0312 -0.0312
G1G2Effect WEIGHT2 Sim1 Sim2 Sim3 Sim4 Sim5 Sim6 Sim7 Sim8 Sim9 Sim10 Sim11 Sim12
1 -0.0312 2.833103 -0.0312 -0.0312 0.0000 -0.0312 0.0312 0.0000 -0.0312 -0.0312 -0.0312 -0.0312 0.0000 -0.0312
2 -0.0640 2.536790 0.0000 -0.0640 -0.0640 -0.0640 -0.0640 -0.0640 -0.0640 -0.0640 -0.0640 -0.0640 -0.0640 -0.0640
3 0.0420 3.309074 0.0420 0.0000 0.0000 0.0420 0.0420 0.0420 0.0420 0.0420 0.0420 0.0420 0.0420 0.0000
4 0.0332 2.476224 0.0332 0.0332 0.0332 0.0332 0.0332 0.0000 0.0332 0.0332 0.0332 0.0332 -0.0332 0.0332
5 0.0000 2.265289 0.0302 0.0302 0.0302 0.0000 0.0302 0.0000 0.0302 -0.0302 0.0302 0.0000 0.0302 0.0000
6 0.0000 1.272609 0.0116 0.0000 0.0000 0.0116 0.0000 -0.0116 0.0032 -0.0102 0.0101
df2as.numeric/as.character
作用于vector/matrix
而不是data.frame
。我们需要遍历数据集并将其转换为数值
,然后应用总和
df2 <- colSums(as.numeric(as.character(df1)))
我们也可以使用
tidyverse
sapply(df1, function(x) sum(as.numeric(as.character(x)), na.rm = TRUE))
如果我们确实需要
colSums
,一个选项是将data.frame
转换为matrix
,这样factor
类被转换为character
,然后将其更改为numeric
,将dim
分配给原始数据集的维度,并获得colSums
library(tidyverse)
df1 %>%
mutate_all(funs(sum(as.numeric(as.character(.)), na.rm = TRUE)))
colSums(`dimi如果列是factor
,请使用lappy
执行此操作lappy(df1,函数(x)as.numeric(as.character(x)))
是那些因素吗???-奇怪,您是否尝试过colSums(x,na.rm=FALSE)?@Sotos是的,你是对的。我一定是把它错当成了平均值。奇怪的是,一个只有数字的数据框被转换成了因子。我从来没见过before@Sotos如果你看最后一行,在某些情况下,它是空白的。可能这就是原因。也许OP可以提到read.csv(“file.csv”,na.strings=”“)
所以我删除了我的答案。但我看不出你在原始问题中看到了什么因素问题?
colSums(`dim<-`(as.numeric(as.matrix(df1)), dim(df1)), na.rm = TRUE)