如何检查向量元素是否在数据框的分组列中并添加二进制列(是,否)
How to check if vector elements are in grouped column of a dataframe and add a binary column (yes, no)
我有一个数据框,其中一列是字母 A 到 Z (name_x),另一列是值 (value_x)。
为简单起见,这 26 行表示一组多行。
我想检查向量 vocals vocals <- c("A", "E", "I", "O", "U")
中的值是否在数据帧 df 的列 name_x 中,并将第三列附加到数据帧,如果是则为 1,如果不是则为 0 .
我用 dplyr 的 case_when 函数尝试了它并得到了这个错误:
Fehler:mutate()
输入 vocal_yes
有问题。
x 输入 vocal_yes
无法回收到大小 26。
i 输入 vocal_yes
是 case_when(vocals %in% name_x ~ 1, TRUE ~ 0)
。
i 输入 vocal_yes
的大小必须为 26 或 1,而不是 5。
运行 rlang::last_error()
查看错误发生的地方。
我明白这个问题了。有没有办法克服这个问题。非常感谢。
代码:
library(dplyr)
# constructing the dataframe
name_x <- LETTERS[1:26]
value_x <- sample.int(100, 26)
df <- data.frame(name_x, value_x)
# vector vocals
vocals <- c("A", "E", "I", "O", "U")
# vector consonant
consonant <- c("B", "C", "D", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "V", "W", "X", "Y", "Z")
df1 <- df %>%
mutate(vocal_yes = case_when(vocals %in% name_x ~ 1,
TRUE ~ 0)
)
df1 <- df %>%
mutate(vocal_yes = case_when(name_x %in% vocals ~ 1,
TRUE ~ 0)
)
如果name_x中只有一个字母,这将解决问题。
为了更好地理解尝试这个简单的代码
vocals <- c('a', 'e', 'i', 'o', 'u')
letters %in% vocals
vocals %in% letters
我们也可以不用 case_when
library(dplyr)
df <- df %>%
mutate(vocal_yes = +(name_x %in% vocals))
我有一个数据框,其中一列是字母 A 到 Z (name_x),另一列是值 (value_x)。
为简单起见,这 26 行表示一组多行。
我想检查向量 vocals vocals <- c("A", "E", "I", "O", "U")
中的值是否在数据帧 df 的列 name_x 中,并将第三列附加到数据帧,如果是则为 1,如果不是则为 0 .
我用 dplyr 的 case_when 函数尝试了它并得到了这个错误:
Fehler:mutate()
输入 vocal_yes
有问题。
x 输入 vocal_yes
无法回收到大小 26。
i 输入 vocal_yes
是 case_when(vocals %in% name_x ~ 1, TRUE ~ 0)
。
i 输入 vocal_yes
的大小必须为 26 或 1,而不是 5。
运行 rlang::last_error()
查看错误发生的地方。
我明白这个问题了。有没有办法克服这个问题。非常感谢。
代码:
library(dplyr)
# constructing the dataframe
name_x <- LETTERS[1:26]
value_x <- sample.int(100, 26)
df <- data.frame(name_x, value_x)
# vector vocals
vocals <- c("A", "E", "I", "O", "U")
# vector consonant
consonant <- c("B", "C", "D", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "V", "W", "X", "Y", "Z")
df1 <- df %>%
mutate(vocal_yes = case_when(vocals %in% name_x ~ 1,
TRUE ~ 0)
)
df1 <- df %>%
mutate(vocal_yes = case_when(name_x %in% vocals ~ 1,
TRUE ~ 0)
)
如果name_x中只有一个字母,这将解决问题。
为了更好地理解尝试这个简单的代码
vocals <- c('a', 'e', 'i', 'o', 'u')
letters %in% vocals
vocals %in% letters
我们也可以不用 case_when
library(dplyr)
df <- df %>%
mutate(vocal_yes = +(name_x %in% vocals))