首页 > 解决方案 > 为特定行赋值 (R)

问题描述

我有 16k + 项目的 df。我想为这些项目分配值 A、B 和 C。

示例:我有以下带有 10 个唯一项目的 df

df <- c(1:10)

现在我有三个单独的向量(A、B、C),其中包含具有值 A、B 或 C 的 df 的行号。

A <- c(3, 9)
B <- c(2, 6, 8)
C <- c(1, 4, 5, 7, 10)

现在我想向 df 添加一个新的类别列,并根据我拥有的三个向量中的行号分配值 A、B 和 C。例如,我想将值 C 分配给 df 的第 1、4、5、7 和 10 行。

我尝试使用 for 循环和 if 语句来将向量的值与 df 的行号相匹配,但我没有成功。有人可以帮忙吗?

标签: rrowassign

解决方案


这是分配新列的一种方法。

创建数据框和向量列表:

df <- data.frame(n=1:10)
dat <- list( A=c(3, 9), B=c(2, 6, 8), C=c(1, 4, 5, 7, 10) )

将数据放在所需的行中:

df$new[unlist(dat)] <- sub("[0-9].*$","",names(unlist(dat)))

结果:

df
    n new
1   1   C
2   2   B
3   3   A
4   4   C
5   5   C
6   6   B
7   7   C
8   8   B
9   9   A
10 10   C

推荐阅读