r - 将行值转换为 R 中的单独列
问题描述
我有一个数据集,可以提取感兴趣的变量,但在理想情况下它们将位于单独的列中时将它们排列成行。看起来像这样
GEOID NAME VARIABLE VALUE
00601 ZCTA5 00601 PCT023003 17285
2 00601 ZCTA5 00601 PCT023004 572
3 00601 ZCTA5 00601 PCT023006 5
4 00601 ZCTA5 00601 P004001 18570
5 00602 ZCTA5 00602 PCT023003 35980
6 00602 ZCTA5 00602 PCT023004 2210
7 00602 ZCTA5 00602 PCT023006 22
8 00602 ZCTA5 00602 P004001 41520
我想让 4 个变量代表 4 列,它们都与唯一的 ZCTA5 值相关联。我如何转换数据以适应该描述。抱歉措辞不佳。
解决方案
我们可以pivot_wider
使用tidyr
library(tidyr)
pivot_wider(df1, names_from = VARIABLE, values_from = VALUE)
# A tibble: 2 x 6
# GEOID NAME PCT023003 PCT023004 PCT023006 P004001
# <int> <chr> <int> <int> <int> <int>
#1 601 ZCTA5 00601 17285 572 5 18570
#2 602 ZCTA5 00602 35980 2210 22 41520
数据
df1 <- structure(list(GEOID = c(601L, 601L, 601L, 601L, 602L, 602L,
602L, 602L), NAME = c("ZCTA5 00601", "ZCTA5 00601", "ZCTA5 00601",
"ZCTA5 00601", "ZCTA5 00602", "ZCTA5 00602", "ZCTA5 00602", "ZCTA5 00602"
), VARIABLE = c("PCT023003", "PCT023004", "PCT023006", "P004001",
"PCT023003", "PCT023004", "PCT023006", "P004001"), VALUE = c(17285L,
572L, 5L, 18570L, 35980L, 2210L, 22L, 41520L)),
class = "data.frame", row.names = c("1",
"2", "3", "4", "5", "6", "7", "8"))
推荐阅读
- scala - Specs2 Result.foreach 可以像匹配器一样工作吗?
- php - 如何在电子邮件中显示二维码图像?
- python - 在 AWS Lambda 中将 PyProj 安装为层
- json - 当json有多个级别时将Json转换为Datatable
- c - 如何打印文件中的数据
- c# - 在 C# 中使用 DDD 实现域服务
- xamarin - 如何在长文本的情况下向上或向下滚动时在用户点击编辑器的位置显示光标?
- tensorflow - TFHub 和模型花园有什么区别?
- python - 更改给定字符串中的大写字母 - Python
- gitlab - Gitlab CI/CD:使用多个when条件