为特定行赋值 (R)

Assign value to a specific rows (R)

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

示例: 我有以下 df 和 10 个独特的项目

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 的行号相匹配,但我没有成功。有人可以帮忙吗?

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

创建数据框和向量列表:

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

您可以遍历列表的名称并将这些名称分配给由连续的数值集索引的位置:

dat <- list(A=A,B=B,C=C)
for(i in names(dat)){ df$new[ dat[[i]] ] <- i}