解析数据框中的重载列 - 使用一个 mutate 语句创建多个列
Parsing overloaded column in dataframe - creating multiple columns with one mutate statement
我有一个重载列,overloaded
在包含 143
或 23
或 12789
等值的数据框中。
df <- data_frame(id = 1:3,
overloaded = c("145", "459", "2"))
我想将此列解析为 9 个新的布尔列。
df %>%
mutate(col_1 = str_detect(overloaded, "1"),
col_2 = str_detect(overloaded, "2"),
col_3 = str_detect(overloaded, "3"),
col_4 = str_detect(overloaded, "4"),
col_5 = str_detect(overloaded, "5"),
col_6 = str_detect(overloaded, "6"),
col_7 = str_detect(overloaded, "7"),
col_8 = str_detect(overloaded, "8"),
col_9 = str_detect(overloaded, "9"))
喜欢
id overloaded col_1 col_2 col_3 col_4 col_5 col_6 col_7 col_8 col_9
1 145 TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE
2 459 FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE TRUE
3 2 FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
我怎样才能不重复自己写这个?
pat = as.character(1:9)
res = sapply(pat, FUN = str_detect, string = df$overloaded)
colnames(res) = paste("col", pat, sep = "_")
cbind(df, res)
# id overloaded col_1 col_2 col_3 col_4 col_5 col_6 col_7 col_8 col_9
# 145 1 145 TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE
# 459 2 459 FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE TRUE
# 2 3 2 FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
我有一个重载列,overloaded
在包含 143
或 23
或 12789
等值的数据框中。
df <- data_frame(id = 1:3,
overloaded = c("145", "459", "2"))
我想将此列解析为 9 个新的布尔列。
df %>%
mutate(col_1 = str_detect(overloaded, "1"),
col_2 = str_detect(overloaded, "2"),
col_3 = str_detect(overloaded, "3"),
col_4 = str_detect(overloaded, "4"),
col_5 = str_detect(overloaded, "5"),
col_6 = str_detect(overloaded, "6"),
col_7 = str_detect(overloaded, "7"),
col_8 = str_detect(overloaded, "8"),
col_9 = str_detect(overloaded, "9"))
喜欢
id overloaded col_1 col_2 col_3 col_4 col_5 col_6 col_7 col_8 col_9
1 145 TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE
2 459 FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE TRUE
3 2 FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
我怎样才能不重复自己写这个?
pat = as.character(1:9)
res = sapply(pat, FUN = str_detect, string = df$overloaded)
colnames(res) = paste("col", pat, sep = "_")
cbind(df, res)
# id overloaded col_1 col_2 col_3 col_4 col_5 col_6 col_7 col_8 col_9
# 145 1 145 TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE
# 459 2 459 FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE TRUE
# 2 3 2 FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE