r - 基于向量对 data.frame 中的列进行分类

标签 r dataframe vector classification

在下面的 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/

相关文章:

r - 计算向量索引的出现次数

R Shiny : read data file, 让用户选择变量,用 ggplot 作图

r - PowerShell:在大文件中替换NUL不起作用

python - Pandas Dataframe 中的焊盘选择范围?

c++ - std::vector 使用成员变量排序

c++ - 将 vector 元素插入队列

database - 无法使用 R (dplyr) 从 Sqlite 接收整个数据帧

r - 如何降低使用 R 创建的 pdf 的质量

python - 提高多个 pandas 列逻辑的程序可读性

Scala Spark 在数据帧和数据集中以不同方式处理 Double.NaN