首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用RowSum定义基于不同类别的阈值

用RowSum定义基于不同类别的阈值
EN

Stack Overflow用户
提问于 2021-07-30 15:14:48
回答 1查看 49关注 0票数 0
代码语言:javascript
复制
df <- data.frame(PatientID = c("0002" ,"0002", "0005", "0005" ,"0009" ,"0009" ,"0018", "0018" ,"0039" ,"0039" , "0043" ,"0043", "0046", "0046" ,"0048" ,"0048"),
                 Timepoint= c("A", "B", "A", "B", "A", "B", "A", "B", "A", "B",  "A", "B",  "A", "B", "A", "B"),
                 sex= c("F", "F", "M", "M", "F", "F", "M", "M","F", "F",  "M", "M",  "M", "M", "F", "F"),
                 country= c("I", "I", "S", "S", "S", "S", "S", "S","S", "S",  "I", "I",  "I", "I", "I", "I"),
                 A = c(NA , 977.146 , NA , 964.315 ,NA , 952.311 , NA , 950.797 , 947.465 , 902.852 ,  985.124  ,NA , 930.141 ,1007.790 , 1027.110 , 999.414),
                 B = c(998.988 , NA , 998.680 , NA , 1020.560 ,  955.540 , 911.606 , 964.039   ,  988.087 , 902.367 , 959.338 ,1029.050 , 987.374 ,1066.400  ,957.512 , 917.597),
                 C = c( 987.140 , 961.810 , 929.466 , 978.166, 969.469 , 943.398  ,936.034,  965.292 , 996.404 , 920.610 , 967.047, 913.517 , 893.428 , 921.606 , 929.590  ,950.493), 
                 D = c( 961.810 , 929.466 , 978.166, 1005.820 , 925.752 , 969.469  ,943.398 ,  965.292 , 996.404 ,  967.047 ,  NA , 893.428 , 921.606 , 976.192 , 929.590 , 950.493),
                 E = c(1006.330, 1028.070 ,  954.274 ,1005.910  ,949.969 , 992.820 ,934.407 , 948.913 ,    961.375  ,955.296 , 961.128  ,998.119 ,1009.110 , 994.891 ,1000.170  ,982.763),
                 G= c(NA , 958.990 , 924.680 , 955.927 , NA , 949.384  ,973.348 , 984.392 , 943.894 , 961.468 , 995.368 , 994.997 ,  979.454 , 952.605 ,NA , 956.507), stringsAsFactors = F)

我有这样的代码来对超出范围的3列或更多列的人进行分类,阈值为1015:

代码语言:javascript
复制
cols <- 5:10
df$Myo <- ifelse(rowSums(df[cols] > 1015, na.rm = TRUE) >= 3, 'Yes', 'No')

我需要将这个代码欺骗为另外两个代码:

  • 一种按性别划分有不同阈值的代码(女性为1004 (df$sex==F),男性为986 (df$sex==M) )。
  • 根据4个阈值进行选择的其他代码:

( a)第一个门槛是生活在瑞典的男性(df$sex==M) (df$country==S),这个门槛是900。

( b)第二个阈值是生活在瑞典的女性(df$sex==F) (df$country==S),这个门槛是1016。

( c)第一个门槛是生活在冰岛的男性(df$sex==M) (df$country==I),这个门槛是800。

d)第二个门槛是生活在冰岛的女性(df$sex==F) (df$country==I),这个门槛是1000。

谢谢!!

EN

回答 1

Stack Overflow用户

发布于 2021-08-03 09:05:33

我发现这段代码也适用于第一种情况:

代码语言:javascript
复制
cols <- 5:10
df$sex= as.factor(df$sex)
df %>% mutate(Myo=ifelse(sex == "F" & (rowSums(df[cols] > 1004, na.rm = TRUE) >=3) ,'Yes',
                                      ifelse(sex == "M" & (rowSums(df[cols] > 986, na.rm = TRUE) >=3) ,'Yes','No')))-> df
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68593345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档