【问题标题】:How to count number of NAs per row, with conditions如何计算每行NAS的数量,条件
【发布时间】:2021-09-23 07:31:39
【问题描述】:
df <- data.frame(PatientID = c("0002" ,"0004", "0005", "0006" ,"0009" ,"0010" ,"0018", "0019" ,"0020" ,"0027", "0039" ,"0041" ,"0042", "0043" ,"0044" ,"0045", "0046", "0047" ,"0048" ,"0049", "0055"),
                 A = c(NA , 977.146 , NA , 964.315 ,NA , 952.311 , NA , 950.797 , 958.975  ,960.712  ,NA , 947.465 , 902.852 , NA,  985.124  ,NA , 930.141 ,1007.790 , 948.848, 1027.110 , 999.414),
                 B = c(998.988 , NA , 998.680 , NA , NA ,1020.560 , 947.751 ,1029.560 , 955.540 , 911.606 , 964.039   ,    NA,  988.087 , 902.367 , 959.338 ,1029.050 , 925.162 , 987.374 ,1066.400  ,957.512 , 917.597),
                 C = c( NA , 987.140 , 961.810 , 929.466 , 978.166, 1005.820  ,925.752 , 969.469 , 943.398  ,936.034,  965.292 , 996.404 , 920.610 , 967.047  ,986.565 , 913.517 , 893.428 , 921.606 , NA , 929.590  ,950.493), 
D = c(975.634 , 987.140 , 961.810 , 929.466 , 978.166, 1005.820 , 925.752 , 969.469  ,943.398 , NA , 965.292 , 996.404 , NA , 967.047 , 986.565 , NA , 893.428 , 921.606 , 976.192 , 929.590 , 950.493),
E = c(1006.330, 1028.070 , NA , 954.274 ,1005.910  ,949.969 , 992.820 , 977.048  ,934.407 , 948.913 , NA , NA , NA,  961.375  ,955.296 , 961.128  ,998.119 ,1009.110 , 994.891 ,1000.170  ,982.763),
G= c(NA , 958.990 , NA , NA , 924.680 , 955.927 , NA , 949.384  ,973.348 , 984.392 , 943.894 , 961.468 , 995.368 , 994.997 , NA , 979.454 , 952.605 , NA  ,   NA, NA , 956.507), stringsAsFactors = F)

亲爱的,

我需要做 2 种不同的练习:

  1. 计算每位患者的 NA 数量,对于患者 0002 为 3,对于患者 0004 为 1。计数列 A:G

这里有答案:R count number of NA values for each row of a CSV

  1. 我不确定如何执行此操作:计算 NA 的数量,仅计算 A:D 列。

谢谢!

丽丽

【问题讨论】:

    标签: r if-statement count na counting


    【解决方案1】:

    两者都可以使用rowSums 在第二种情况下将df 子集添加到所需的列。

    rowSums(is.na(df))
    # [1] 3 1 3 2 2 0 2 0 0 1 2 2 2 1 1 2 0 1 2 1 0
    
    rowSums(is.na(df[2:5]))
    # [1] 2 1 1 1 2 0 1 0 0 1 1 1 1 1 0 2 0 0 1 0 0
    

    【讨论】:

    • df[2:5]df[, 2:5] 的行为是否始终相同?其中之一有优势吗?
    • @bird df[, 2:5] 也适用于 matrixtibble。所以df[, 2:5] 将在更多情况下工作。
    • 我应该使用 df[,2:5] 来保持理智吗? - 谢谢你的回答!!
    • @Lili 如果你有data.frame 没关系。如果您只选择一列df[2] 仍将返回data.frame,而df[,2] 将返回vectordf[,2, drop = FALSE] 将返回data.frame。如果您将使用其他数据类型,则必须检查它们返回的内容。
    猜你喜欢
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    相关资源
    最近更新 更多