jon*_*jon 23 transpose r dataframe
我有一个很大的数据帧,但小例子是这样的:
mydf <- data.frame(A = c(letters[1:10]), M1 = c(11:20), M2 = c(31:40), M3 = c(41:50))
Run Code Online (Sandbox Code Playgroud)
我想转置数据帧并将列1(A)保持为列标题(字母[1:10])作为变量名称.以下是不成功代码的临时试验.
tmydf = data.frame(t(mydf))
names(tmydf) <- tmydf[1,]
Run Code Online (Sandbox Code Playgroud)
谢谢;
Ram*_*ath 52
这是一种方式
tmydf = setNames(data.frame(t(mydf[,-1])), mydf[,1])
Run Code Online (Sandbox Code Playgroud)
也许这样的东西:
tmp <- as.data.frame(t(mydf[,-1]))
> colnames(tmp) <- mydf$A
> tmp
a b c d e f g h i j
M1 11 12 13 14 15 16 17 18 19 20
M2 31 32 33 34 35 36 37 38 39 40
M3 41 42 43 44 45 46 47 48 49 50
Run Code Online (Sandbox Code Playgroud)
另一种使用/管道janitor::row_to_names()
的方式dplyr
magrittr
mydf <- data.frame(A = c(letters[1:10]), M1 = c(11:20), M2 = c(31:40), M3 = c(41:50))
library(janitor, warn.conflicts = F)
library(dplyr, warn.conflicts = F)
mydf %>% t %>% as.data.frame() %>% row_to_names(1)
#> a b c d e f g h i j
#> M1 11 12 13 14 15 16 17 18 19 20
#> M2 31 32 33 34 35 36 37 38 39 40
#> M3 41 42 43 44 45 46 47 48 49 50
Run Code Online (Sandbox Code Playgroud)
由reprex 包(v2.0.0)于 2021-06-17 创建
您可以使用包中的pivot_longer
和函数。pivot_wider
tidyr
library(tidyr)
mydf%>%
pivot_longer(cols=c(-A),names_to="Original_Vars")%>%
pivot_wider(names_from=c(A))
Run Code Online (Sandbox Code Playgroud)
创建pivot_longer
一个名为“Original_Vars”的列,以及一个名为 的新列value
。A
如果您停在这里,您的变量、“Original_Vars”(此处为 M1、M2 和 M3)以及与该配对关联的值的每个组合都会有一行。
然后,从“A”列中获取所有值,并将它们转换为列,并使用我们创建的列pivot_wider
中的值进行填充。value
pivot_longer
归档时间: |
|
查看次数: |
35023 次 |
最近记录: |