r - R 来自 Cols 的第一个非 NA 值
问题描述
df <- data.frame(ID=c(1,2,3,4,5,6),
CO=c(-6,4,2,3,0,2),
CATFOX=c(1,NA,NA,3,0,NA),
DOGFOX=c(NA,NA,5,1,2,NA),
RABFOX=c(NA,3,NA,5,3,NA),
D=c(0,4,5,6,1,2),
WANT=c(1,3,5,3,0,NA))
我有一个数据框,我希望列WANT
采用不是 NA 的“CATFOX”“DOGFOX”“RABFOX”的第一个值。有data.table
解决办法吗?我试过了,但没有产生预期的结果:
df$WANT=do.call(coalesce, data[grepl('FOX',names(data))])
解决方案
你coalesce
在你的例子中是dplyr
' 的构造。尝试fcoalesce
:
library(data.table)
setDT(df)[, WANT2 := fcoalesce(CATFOX, DOGFOX, RABFOX)]
输出:
ID CO CATFOX DOGFOX RABFOX D WANT WANT2
1: 1 -6 1 NA NA 0 1 1
2: 2 4 NA NA 3 4 3 3
3: 3 2 NA 5 NA 5 5 5
4: 4 3 3 1 5 6 3 3
5: 5 0 0 2 3 1 0 0
6: 6 2 NA NA NA 2 NA NA
推荐阅读
- python - 从字典和python中的列表列表创建字典集
- mongodb - 在 Quasar / VueJS 中连接到 MongoDB
- css - css覆盖禁用文本选择
- html - Crisp 不断抛出错误“BoundWidget”对象没有属性“字段”
- c - 子进程改变内存图像
- reactjs - Webpack 在 React 图像导入时抛出错误
- mongodb - MongoDB聚合管道:如何将字符串与数组内的日期进行比较
- python - 以浮点数组的形式获取音频频率和幅度
- python-3.x - 为什么我不能更换新的行分隔符?
- c++ - c++ 中是否有与 glibc mtrace() 函数类似的函数?