我有以下数据框(df):
RT1 RT2 RT3
0.777 0.323 1.654
NA NA NA
0.766 0.804 NA
0.887 NA NA
NA NA 1.271
0.832 NA NA
我想添加一个专栏' RTfirst'它仅在每一行中提供第一个整数(非NA)值,因此它看起来像:
RT1 RT2 RT3 RTFirst
0.777 0.323 1.654 0.777
NA NA NA NA
0.766 0.804 NA 0.766
0.887 NA NA 0.887
NA NA 1.271 1.271
0.832 NA NA 0.832
我尝试使用&#39; apply&#39;来计算每行的平均RT。功能,然后使用&#39;如果那么&#39;基于每行中的NA数量的计数(例如,如果CountNA <= 1等),但我觉得这可能过于复杂了。
有更明显的解决方案吗?
由于
答案 0 :(得分:0)
以下是使用purrr
包的解决方案:
df <- data.frame(
RT1 = c(0.777, NA, 0.766, 0.887, NA, 0.832),
RT2 = c(0.323, NA, 0.804, NA, NA, NA),
RT3 = c(1.654, NA, NA, NA, 1.271, NA)
)
library(purrr)
m <- as.matrix(df)
RTFirst <- apply(X = m, MARGIN = 1, FUN = function(row) detect(row, function(x) !is.na(x)))
RTFirst <- vapply(RTFirst, function(x) ifelse(is.null(x), NA, x), numeric(1))
cbind(df, RTFirst)
(编辑:我以前没有在他的评论中检查过Rich的解决方案。他实际上更优雅,不需要第三方包。)