我的数据框df如下所示:
ID A B C D...Z
1 name1 4 6 7 8...
2 name2 5 8 3 5...
...
50 name50 4 6 7 8...
这就是我需要的:
ID name1 name2 ...name50
1 A 4 5 ... 4
2 B 6 8 ... 6
etc.
我尝试了转置命令as.data.frame(t(df))
,但行(1,2,... 50)的索引号成为列名,我不想要。
我想使用旧数据框中的第一列(name1
,name2
,...)来成为新数据框的列名。
我也丢失了行所需的索引号。
主要问题是df
有大约15k行和45列,所以使用强力交换行和列并不是那么简单。
我很难过,并会感激任何提示。是的,我需要数据框中的数据。
为格式化道歉,但我仍然试图熟悉该网站。
答案 0 :(得分:2)
首先将行名称设置为ID列值,然后转置:
> df
ID A B C D
1 name1 4 6 7 8
2 name2 5 8 3 5
3 name50 4 6 7 8
> rownames(df)<-df$ID
> df$ID<-NULL
> df
A B C D
name1 4 6 7 8
name2 5 8 3 5
name50 4 6 7 8
> t(df)
name1 name2 name50
A 4 5 4
B 6 8 6
C 7 3 7
D 8 5 8
答案 1 :(得分:0)
您应该能够删除行号,像以前一样进行转置,然后将行号添加回来:row.names(df) <- 1 : nrow(df)
。
答案 2 :(得分:0)
希望这有帮助!
library(tibble)
library(dplyr)
df %>%
t() %>%
as.data.frame(stringsAsFactors = F) %>%
rownames_to_column("value") %>%
`colnames<-`(.[1,]) %>%
.[-1,] %>%
`rownames<-`(NULL)
输出是:
ID name1 name2 name50
1 A 4 5 4
2 B 6 8 6
3 C 7 3 7
4 D 8 5 8
示例数据:
df <- structure(list(ID = c("name1", "name2", "name50"), A = c(4L,
5L, 4L), B = c(6L, 8L, 6L), C = c(7L, 3L, 7L), D = c(8L, 5L,
8L)), .Names = c("ID", "A", "B", "C", "D"), class = "data.frame", row.names = c(NA,
-3L))