首先,我是R的新手,正在从SAS转换。我有一个1000行乘24列的数据集,其中列是不同的处理。我想计算观察符合下面列出的数据集行的标准的次数。
Gene A B C D
1 AARS_3 NA NA 4.168365 NA
2 AASDHPPT_21936 NA NA NA -3.221287
3 AATF_26432 NA NA NA NA
4 ABCC2_22 4.501518 3.17992 NA NA
5 ABCC2_26620 NA NA NA NA
我试图创建计数
的列向量然后我会使用cbind将这些添加到我的大数据集
我解决了第一个:
NA.Count <- (apply(b01,MARGIN=1,FUN=function(x) length(x[is.na(x)])))
我试图修改它来计算评估!is.na然后用这个来计算值小于零的次数:
lt0 <- (apply(b01,MARGIN=1,FUN=function(x) ifelse(x[!is.na(x)],count(x[x<0]))))
根本不起作用。
我尝试了十几种方法让dplyr mutate与之合作并且没有成功。
我想要的是下面的最后两列;如果你有一个更清洁版的NA.Count,我也会非常感激。
Gene A B C D NA.Count lt0 gt0 1 AARS_3 NA NA 4.168365 NA 3 0 1 2 AASDHPPT_21936 NA NA NA -3.221287 3 1 0 3 AATF_26432 NA NA NA NA 4 0 0 4 ABCC2_22 4.501518 3.17992 NA NA 2 0 2 5 ABCC2_26620 NA NA NA NA 4 0 0
答案 0 :(得分:1)
这是一种利用RUE中的TRUE等于1的事实的方法。
# test data frame
lil_df <- data.frame(Gene = c("AAR3", "ABCDE"),
A = c(NA, 3),
B = c(2, NA),
C = c(-1, -2),
D = c(NA, NA))
# is.na
NA.count <- rowSums(is.na(lil_df[,-1]))
# less than zero
lt0 <- rowSums(lil_df[,-1]<0, na.rm = TRUE)
# more that zero
mt0 <- rowSums(lil_df[,-1]>0, na.rm = TRUE)
# cbind to data frame
larger_df <- cbind(lil_df, NA.count, lt0, mt0 )
larger_df
Gene A B C D NA.count lt0 mt0
1 AAR3 NA 2 -1 NA 2 1 1
2 ABCDE 3 NA -2 NA 2 1 1