在下面的 data.frame df
中,我想创建一个新列,其中的值将从 A
列的分类中派生出来。如果 A
列中的数字对应于 G1
向量中的数字之一,则在名为 Group
的新列中,它应被分类为“G1”。类似地,如果A
列中的值对应于G2
向量中的值之一,则应将其分类为“G2”。其余列应归类为“G0”。
A <- seq(1900,2000,1)
B <- rnorm(101,10,2)
df <- data.frame(A=A,B=B)
G1 <- c(1963,1982,1952)
G2 <- c(1920,1933,1995)
# This doesn't do what I would like it to achieve
df$group <- ifelse(df$A == G1,"G1",ifelse(df$A == G2,"G2","G0"))
最佳答案
您正在寻找的是
df$group <- ifelse(df$A %in% G1, "G1", ifelse(df$A %in% G2, "G2", "G0"))
可以使用 dplyr
中的 case_when
更好地表示
library(dplyr)
df %>%
mutate(group = case_when(A %in% G1 ~ "G1",
A %in% G2 ~ "G2",
TRUE ~ "G0"))
关于r - 基于向量对 data.frame 中的列进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54076339/