根据另一个字符列为列赋值
Assign value to column based on another character column
我有一个如下所示的数据框:
df <- data.frame(subject = c(a1_1, a1_1, a1_1, a1_1, a1_2, a1_2, b1_1, b1_1),
group = c(1, NA, NA, NA, NA, 1, NA, NA, 2, NA)
如您所见,只有每个 subject
的第一个条目分配了 group
。我的想法是用 group
数字填充每个 subject
的空白区域(例如,所有 a1_1 必须有第 1 组值)。
感谢您的帮助!
如果您的数据始终采用相同的结构,您可以从主题信息中提取组分配:
library(stringr)
df <- data.frame(subject = c(rep('a1_1', 4), rep('a1_2', 2), rep('b1_1',4)))
df$group <- str_sub(df$subject, -1)
str_sub 提取字符的最后一个元素以分配给组,假设它是您想要的最后一个字符。
我们可以
df$group <- match(df$subject, unique(df$subject))
-输出
> df
subject group
1 a1_1 1
2 a1_1 1
3 a1_1 1
4 a1_1 1
5 a1_2 2
6 a1_2 2
7 b1_1 3
8 b1_1 3
9 b1_1 3
10 b1_1 3
数据
df <- structure(list(subject = c("a1_1", "a1_1", "a1_1", "a1_1", "a1_2",
"a1_2", "b1_1", "b1_1", "b1_1", "b1_1")), class = "data.frame", row.names = c(NA,
-10L))
我有一个如下所示的数据框:
df <- data.frame(subject = c(a1_1, a1_1, a1_1, a1_1, a1_2, a1_2, b1_1, b1_1),
group = c(1, NA, NA, NA, NA, 1, NA, NA, 2, NA)
如您所见,只有每个 subject
的第一个条目分配了 group
。我的想法是用 group
数字填充每个 subject
的空白区域(例如,所有 a1_1 必须有第 1 组值)。
感谢您的帮助!
如果您的数据始终采用相同的结构,您可以从主题信息中提取组分配:
library(stringr)
df <- data.frame(subject = c(rep('a1_1', 4), rep('a1_2', 2), rep('b1_1',4)))
df$group <- str_sub(df$subject, -1)
str_sub 提取字符的最后一个元素以分配给组,假设它是您想要的最后一个字符。
我们可以
df$group <- match(df$subject, unique(df$subject))
-输出
> df
subject group
1 a1_1 1
2 a1_1 1
3 a1_1 1
4 a1_1 1
5 a1_2 2
6 a1_2 2
7 b1_1 3
8 b1_1 3
9 b1_1 3
10 b1_1 3
数据
df <- structure(list(subject = c("a1_1", "a1_1", "a1_1", "a1_1", "a1_2",
"a1_2", "b1_1", "b1_1", "b1_1", "b1_1")), class = "data.frame", row.names = c(NA,
-10L))