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)
各位,
我需要做两个不同的练习:
1.计算每个患者的NA数,对于患者0002为3,对于患者0004为1
这在这里得到回答:R count number of NA values for each row of a CSV
1.我不知道如何做到这一点,虽然:计算NA的数目,仅计算列A:D。
谢谢!
丽丽
2条答案
按热度按时间ztigrdn81#
在第二种情况下,可以使用
rowSums
将子集 df 设置为所需的列。am46iovg2#
我自己也遇到过这个问题,我认为dplyr 1.0+有一个很好的选项来计算选定列的每一行的NA(基于GKi的解决方案):
注意,如果我有c(“col1”,“col2”),你可以用任何类型的dplyr选择辅助器来代替,例如
starts_with("x_")
,contains("myimportant")
,where(is.numeric)
,等等。