r - 如何转置单列以适应 R 中时间序列中的其余数据?
问题描述
我已经尽力寻找类似的问题,但找不到我正在寻找的确切内容。我有一个关于 2012-2021 年荷兰各省犯罪统计数据的数据集。我从警方获得的数据将所有不同的犯罪记录在一个列中,并提供每年每月的数据。对于我的分析,我实际上想将每个犯罪都用作一个变量,因此每种犯罪类型都需要在其自己的列中,并具有适当数量的已登记犯罪。我对如何转置这些数据以使其正常工作感到非常困惑。
如果我不清楚我在这里的意思是一个例子。
我的数据目前看起来像这样:
ID crime_name Province Year Month Reg_crimes
1 1 Total Groningen 2012 01 2913
2 2 Total Groningen 2012 02 2399
3 3 Total Groningen 2012 03 2870
4 4 Total Groningen 2012 04 2649
5 5 Total Groningen 2012 05 2891
6 6 Total Groningen 2012 06 2710
crime_name 是 48 种不同类型的犯罪(对于这个例子,它只给我 Total,但还有更多),Reg_crimes 是该类型在特定月份的登记犯罪数量。
理想情况下,我希望它看起来像这样:
ID Province Year Month Total Type_1 Type_2 Type_3 ....... Type_48
1 1 Groningen 2012 01 2913
2 2 Groningen 2012 02 2399
3 3 Groningen 2012 03 2870
4 4 Groningen 2012 04 2649
5 5 Groningen 2012 05 2891
6 6 Groningen 2012 06 2710
我希望这很清楚,我试图用语言表达有点困难,但我会很乐意回答所有问题,以防有一些混淆。
这是我的数据示例:
ds <- structure(list(ID = 1:6, crime_name = c("Total", "Total", "Total",
"Total", "Total", "Total"), Province = c("Groningen", "Groningen",
"Groningen", "Groningen", "Groningen", "Groningen"), Year = c("2012",
"2012", "2012", "2012", "2012", "2012"), Month = c("01", "02",
"03", "04", "05", "06"), Reg_crimes = c(" 2913", " 2399",
" 2870", " 2649", " 2891", " 2710")), row.names = c(NA,
6L), class = "data.frame")
解决方案
这是一个tidyr
也使用新的基本 R 管道运算符的解决方案。
ds |> tidyr::pivot_wider(
id_cols = -c(crime_name, Reg_crimes),
names_from = crime_name,
values_from = Reg_crimes
)
## A tibble: 6 x 5
# ID Province Year Month Total
# <int> <chr> <chr> <chr> <chr>
#1 1 Groningen 2012 01 " 2913"
#2 2 Groningen 2012 02 " 2399"
#3 3 Groningen 2012 03 " 2870"
#4 4 Groningen 2012 04 " 2649"
#5 5 Groningen 2012 05 " 2891"
#6 6 Groningen 2012 06 " 2710"
没有管道:
tidyr::pivot_wider(
data = ds,
id_cols = -c(crime_name, Reg_crimes),
names_from = crime_name,
values_from = Reg_crimes
)
推荐阅读
- list - 如何从列表内部访问实例方法?
- python - 如何重塑没有列的数组?
- vba - 如何知道特定的导出过滤器是否已在 Windows 中注册?
- c++ - get_input_port 方法在 drake 中的什么位置?
- java - ResultSet 关闭后不允许 SQL 异常操作,何时关闭?
- java - com.eternitywall:java-opentimestamps:1.17 模块中的重复类 okio 与 ProofMode Android 库
- python - Python如何通过指定字符获取字符串中的单词?
- java - 使用逗号从 Web 抓取时分隔列表元素
- javascript - 尝试从函数访问地图以在滚动视图中使用
- node.js - Sinon如何在mysql2.createPool函数中对双箭头函数进行单元测试