【发布时间】:2018-12-18 15:01:29
【问题描述】:
我有一个非常大的数据集,我想生成跨行的值计数大于 0 且小于 0 的新列。然后我想添加另一列来划分这些值(例如 above0_column / below0_column)
我的数据如下所示:
ID SNP1 SNP2 SNP3 SNP4
1 -0.5 0.32 1.2 -0.8
2 1.5 -1.2 0.3 -0.6
3 2.6 -3.4 0.2 5.0
4 -0.3 5.0 -1.2 -0.3
新列应指示 ID 1:0 为 2
这些是我尝试过的功能:
data$above0<-apply(data,1,function(i) sum(i>0))
和
data$above0<- Reduce('+', lapply(data,'>',0))
两者都生成了一个新列,但是,列中没有填充任何值。当我查看“above0”的列时,它充满了 NA。我可以使用另一个简单的函数来生成计数 >0 和
【问题讨论】:
-
我编辑了您的代码问题,当代码和数据被专门格式化时,它通常有助于提高可读性。请阅读其他SO question formatting tricks。谢谢!
-
你要
apply(data[-1], 1, function(x) table(sign(x))) -
我相信
rowSums应该比apply(data,1,function(i) sum(i>0))快。另外,对我来说它看起来更简单
标签: r data.table apply