gpt4 book ai didi

r - 如何将数据集转置为 R 中的特定方式

转载 作者:行者123 更新时间:2023-12-04 23:53:29 25 4
gpt4 key购买 nike

你能帮我解决这个问题吗?我有一个这样的数据集。

sample <- matrix(c(1, 'A', 0.17,
1, 'B', 0.80,
1, 'C', 0.10,
1, 'D', 0.35,
2, 'A', 0.44,
2, 'B', 0.24,
2, 'C', 0.39,
2, 'D', 0.65,
3, 'A', 0.61,
3, 'B', 0.94,
3, 'C', 0.19,
3, 'D', 0.65), nrow=12, ncol=3, byrow=T)

colnames(sample) <- c('year', 'country', 'X')
as.data.frame(sample)

哪些输出

   year country    X
1 1 A 0.17
2 1 B 0.8
3 1 C 0.1
4 1 D 0.35
5 2 A 0.44
6 2 B 0.24
7 2 C 0.39
8 2 D 0.65
9 3 A 0.61
10 3 B 0.94
11 3 C 0.19
12 3 D 0.65

我需要什么技巧才能得到像下面这样的数据集?

year    A     B       C       D
1 0.17 0.80 0.10 0.35
2 0.44 0.24 0.39 0.65
3 0.61 0.94 0.19 0.65

最佳答案

您的代码缺少第一行或第二行,所以我重新格式化了一下。下面是使用 tidyr 的解决方案:

library(dplyr)
library(tidyr)
df <- read.table(text =
"1, 'A', 0.17
1, 'B', 0.80
1, 'C', 0.10
1, 'D', 0.35
2, 'A', 0.44
2, 'B', 0.24
2, 'C', 0.39
2, 'D', 0.65
3, 'A', 0.61
3, 'B', 0.94
3, 'C', 0.19
3, 'D', 0.65", sep = ",", strip.white = TRUE)

colnames(df)<-c('year', 'country', 'X')

df %>%
arrange(year, country) %>%
pivot_wider(names_from = country, values_from = X)
#> # A tibble: 3 x 5
#> year A B C D
#> <int> <dbl> <dbl> <dbl> <dbl>
#> 1 1 0.17 0.8 0.1 0.35
#> 2 2 0.44 0.24 0.39 0.65
#> 3 3 0.61 0.94 0.19 0.65

reprex package 创建于 2020-04-10 (v0.3.0)

关于r - 如何将数据集转置为 R 中的特定方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61146520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com