r - r - 使用 tidyr 在多个键列中收集多个列
问题描述
不确定是否tidyr::gather
可以用于获取多个列并将它们合并到多个键列中。
已经提出了类似的问题,但它们都指在一个关键列中收集多个列。
我正在尝试将 4 列收集到 2 个键和 2 个值列中,如下例所示:
样本数据:
df <- data.frame(
subject = c("a", "b"),
age1 = c(33, 35),
age2 = c(43, 45),
weight1 = c(90, 67),
weight2 = c(70, 87)
)
subject age1 age2 weight1 weight2
1 a 33 43 90 70
2 b 35 45 67 87
期望的结果:
dfe <- data.frame(
subject = c("a", "a", "b", "b"),
age = c("age1", "age2", "age1", "age2"),
age_values = c(33, 43, 35, 45),
weight = c("weight1", "weight2", "weight1", "weight2"),
weight_values = c(90, 70, 67, 87)
)
subject age age_values weight weight_values
1 a age1 33 weight1 90
2 a age2 43 weight2 70
3 b age1 35 weight1 67
4 b age2 45 weight2 87
解决方案
这是一种方法 -
df %>%
gather(key = "age", value = "age_values", age1, age2) %>%
gather(key = "weight", value = "weight_values", weight1, weight2) %>%
filter(substring(age, 4) == substring(weight, 7))
subject age age_values weight weight_values
1 a age1 33 weight1 90
2 b age1 35 weight1 67
3 a age2 43 weight2 70
4 b age2 45 weight2 87
推荐阅读
- node.js - Sequelize - 带有可选范围的急切加载关联
- python - 将句子拆分为单词并对每个单词重新应用情感极性时如何维护索引?
- google-cloud-firestore - 如何使用 CLI 为 Firestore 部署安全规则?错误:无法理解要部署的目标
- laravel-backpack - 如何使用背包换laravel创建依赖选择?
- lua - 在LUA中循环并将字符添加到字符串
- python - 如何访问 pandas 数据框 groupby 对象中的数据?
- data-recovery - 划伤的 CD-ROM / 逐扇区读取 / SCSI 命令
- peoplesoft - 设置列的文本长度限制
- python-3.x - 从表格抓取将数据写入 csv 文件
- twitter-bootstrap - 使用引导可访问性脚本在空间上关闭搜索下拉菜单