r - 根据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"
解决方案
我们可以用split
创建一个list
ofvector
然后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"
推荐阅读
- ios - iOS 13 移除 UIView 以模拟状态栏背景
- git - Git 仅按提交顺序记录当前分支消息
- python - 如何只允许使用 Graphene 进行白名单查询?
- excel - 我可以仅将自动填充限制为单元格内容吗?
- angular - 角度 => 里面有材料表的表格问题
- javascript - 使用 map() 获取对象属性并降低其大小写
- html - 从动态生成的 HTMLElement 表单中检索输入值?
- vue.js - TypeError:无法读取未定义的属性“”
- sqlite - ORDER BY 不能引用外部查询列?
- javascript - 当我在某些行上使用显示“无”时取消选中复选框