gpt4 book ai didi

r - 如何转置数据框以便在 r 中切换行和列?

转载 作者:行者123 更新时间:2023-12-02 03:54:34 26 4
gpt4 key购买 nike

我有一个数据框(简化),如下所示:

Age, Kodiak, Banana, Banff, Montreal, Fairfax
Age_1, 5, 6 , 7, 9, 2
Age_2, 7, 6, 4, 3, 2
Age_3, 5, 3, 8, 5, 9

我希望我的数据框看起来更像这样:

Location, Age_1, Age_2, Age_3
Kodiak, 5, 7, 5
Banana, 6, 6, 3
Banff, 7, 4, 8
Montreal, 9, 3, 5
Fairfax, 2, 2, 9

我看过转置函数,但我对如何切换列和行有点困惑。我对 R 还很陌生。

最佳答案

有两种方法可以做到这一点。第一个是使用 t 来转置数据帧,就好像它是一个矩阵一样(实际上 t 的结果是一个矩阵,而不是数据帧)。

另一种选择是采用整洁数据方法,并使用 tidyr::spreadtidyr::gather。两者都有相似的结果,尽管第二个更通用,因为它可以部分应用。另请注意,使用 t 时,第一列(类型为 chr)将成为新矩阵中的第一行,因此整个矩阵将转换为 >chr 矩阵,而 gather+spread 保持列数字。


library(tidyr)

df <- read.table(text = "Age Kodiak Banana Banff Montreal Fairfax
Age_1 5 6 7 9 2
Age_2 7 6 4 3 2
Age_3 5 3 8 5 9", header = T)

t(df)
#> [,1] [,2] [,3]
#> Age "Age_1" "Age_2" "Age_3"
#> Kodiak "5" "7" "5"
#> Banana "6" "6" "3"
#> Banff "7" "4" "8"
#> Montreal "9" "3" "5"
#> Fairfax "2" "2" "9"

df %>%
gather("location", "value", 2:ncol(df)) %>%
spread(Age, value)
#> location Age_1 Age_2 Age_3
#> 1 Banana 6 6 3
#> 2 Banff 7 4 8
#> 3 Fairfax 2 2 9
#> 4 Kodiak 5 7 5
#> 5 Montreal 9 3 5

关于r - 如何转置数据框以便在 r 中切换行和列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44400573/

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