【发布时间】:2021-12-08 19:03:25
【问题描述】:
我有一个这样的数据框
id <- c(100,101,102,103,104,105,106,107,108,109,110)
state_code <- c("CA","CA","CA","CA","CA","CA","TX","TX","AZ","MN","CO")
df.sample <- data.frame(id,state_code,stringsAsFactors=FALSE)
我正在尝试对不同情况的数据框输入使用多个过滤器。
这是我正在使用的条件
- 如果整个数据帧的总行数
示例:
id <- c(100,101,102,103)
state_code <- c("CA","CA","TX","CA")
df.sample <- data.frame(id,state_code,stringsAsFactors=FALSE)
期望的输出
"Not enough ids"
- 如果总行数 >=5 并且如果
state_code >=5中的任何单个状态的行,则创建列Type = state_code或Type = "combined"
示例:
id <- c(100,101,102,103,104,105,106,107,108,109,110,111,112,113,114)
state_code <- c("CA","CA","CA","CA","CA","CA","TX","TX","TX","TX","TX","TX","AZ","MN","CO")
df.sample <- data.frame(id,state_code,stringsAsFactors=FALSE)
期望的输出
id state_code Type
100 CA CA
101 CA CA
102 CA CA
103 CA CA
104 CA CA
105 CA CA
106 TX TX
107 TX TX
108 TX TX
109 TX TX
110 TX TX
111 TX TX
112 AZ Combined
113 MN Combined
114 CO Combined
- 如果总行数 >=5 并且如果
state_code are not >=5中有任何单个州的行,则为所有值创建一个列Type = "combined"
示例:
id <- c(100,101,102,103,104,105,106,107,108,109,110)
state_code <- c("CA","CA","CA","CA","TX","TX","TX","TX","AZ","MN","CO")
df.sample <- data.frame(id,state_code,stringsAsFactors=FALSE)
期望的输出
id state_code Type
100 CA Combined
101 CA Combined
102 CA Combined
103 CA Combined
104 TX Combined
105 TX Combined
106 TX Combined
107 TX Combined
108 AZ Combined
109 MN Combined
110 CO Combined
我正在尝试为第一种情况这样做,但无法为其他人这样做
if(nrow(df.sample < 5){
cat("Not enough ids")
}
如何将所有这些逻辑封装到一个代码中?有人能指出我正确的方向吗?
【问题讨论】:
-
如果总行数 您是指整个数据帧还是每个代码?您的示例数据框(第一个)的期望结果是什么?
-
@Sotos,我刚刚编辑过。感谢您指出。这是整个数据框。
标签: r dplyr data.table tidyverse