首页 > 解决方案 > 根据R中数据框中的列条件创建向量

问题描述

我有一个简单的数据框,格式如下:

df <- data.frame(var1 = c(1, 1, 1, 2, 2, 2),
                  var2 = c(144, 156, 160, 123, 138, 170))

我想在我的数据框中创建一个带有 var1 唯一值索引的向量(仅称为 vec),然后在该索引处分配 var2 中与其 var1 的值相对应的值。因此,var1 是我数据中的 id 或分组变量。所需的结果如下所示:

vec
"144, 156, 160", "123, 138, 170"
vec[1] 
"144, 156, 160"
vec[2]"123, 138, 170"

标签: rdataframevectorconditional-statements

解决方案


我们可以用split创建一个listofvector然后paste把它放在一起

var1 <- unname(sapply(split(df$var2, df$var1), toString))
var1[1]
#[1] "144, 156, 160"
var1[2]
#[1] "123, 138, 170"

或者如果我们需要一个循环解决方案

un1 <- unique(df$var1)
out <- character(length(un1))

for(i in seq_along(un1)) out[i] <- toString(df$var2[df$var1 == un1[i]])

out
#[1] "144, 156, 160" "123, 138, 170"

推荐阅读