我有一个数据帧,我想把它堆叠在R中,这样我就可以得到三列。下面是当前格式的一些示例数据。
> dput(df)
structure(list(Day = c("d1", "d2", "d3", "d4", "d5", "d6", "d7",
"d8", "d9", "d10"), A1 = c(14L, 24L, 22L, NA, NA, NA, NA, NA,
NA, NA), A2 = c(9L, 15L, 34L, 2L, 12L, 34L, 234L, 34L, NA, NA
), A3 = c(3L, 4L, 19L, 76L, 34L, 34L, 23L, 24L, 37L, 44L), A1.1 = c(34L,
55L, 75L, 12L, 56L, 35L, 3L, 22L, NA, NA)), .Names = c("Day",
"A1", "A2", "A3", "A1.1"), class = "data.frame", row.names = c(NA,
-10L))
> df
Day A1 A2 A3 A1.1
1 d1 14 9 3 34
2 d2 24 15 4 55
3 d3 22 34 19 75
4 d4 NA 2 76 12
5 d5 NA 12 34 56
6 d6 NA 34 34 35
7 d7 NA 234 23 3
8 d8 NA 34 24 22
9 d9 NA NA 37 NA
10 d10 NA NA 44 NA
我想最终得到这样格式化的数据帧,有三列标题为"天"、"动物"one_answers"计数":
Day Animal Count
d1 A1 14
d2 A1 24
d3 A1 22
d4 A1 NA
d5 A1 NA
d6 A1 NA
d7 A1 NA
d8 A1 NA
d9 A1 NA
d10 A1 NA
d1 A2 9
d2 A2 15
d3 A2 34
d4 A2 2
d5 A2 12
d6 A2 34
d7 A2 234
d8 A2 34
d9 A2 NA
d10 A2 NA
d1 A3 3
d2 A3 4
d3 A3 19
d4 A3 76
d5 A3 34
d6 A3 34
d7 A3 23
d8 A3 24
d9 A3 37
d10 A3 44
d1 A1 34
d2 A1 55
d3 A1 75
d4 A1 12
d5 A1 56
d6 A1 35
d7 A1 3
d8 A1 22
d9 A1 NA
d10 A1 NA
我知道这应该是一项容易的任务,但我真的很难找到解决方案。如有任何帮助,不胜感激。
带dplyr
和tidyr
:
library(dplyr)
library(tidyr)
df <- df %>%
gather("animal", "count", -Day)
head(df)
# Day animal count
# 1 d1 A1 14
# 2 d2 A1 24
# 3 d3 A1 22
# 4 d4 A1 NA
# 5 d5 A1 NA
# 6 d6 A1 NA
您想使用整形2包的融化功能将数据帧从宽格式格式化为长格式,也在此处回答
library(reshape2)
df <- structure(list(Day = c("d1", "d2", "d3", "d4", "d5", "d6", "d7",
"d8", "d9", "d10"), A1 = c(14L, 24L, 22L, NA, NA, NA, NA, NA,
NA, NA), A2 = c(9L, 15L, 34L, 2L, 12L, 34L, 234L, 34L, NA, NA
), A3 = c(3L, 4L, 19L, 76L, 34L, 34L, 23L, 24L, 37L, 44L)), .Names = c("Day",
"A1", "A2", "A3"), class = "data.frame", row.names = c(NA, -10L
))
long_format <- melt(df)
colnames(long_format)[2:3] <- c("Animal","Count")
可以用基R函数melt
:完成
melt(df)
OUTPUT :
Day variable value
1 d1 A1 14
2 d2 A1 24
3 d3 A1 22
4 d4 A1 NA
5 d5 A1 NA
6 d6 A1 NA
7 d7 A1 NA
8 d8 A1 NA
9 d9 A1 NA
10 d10 A1 NA
11 d1 A2 9
12 d2 A2 15
13 d3 A2 34
14 d4 A2 2
15 d5 A2 12
16 d6 A2 34
17 d7 A2 234
18 d8 A2 34
19 d9 A2 NA
20 d10 A2 NA
21 d1 A3 3
22 d2 A3 4
23 d3 A3 19
24 d4 A3 76
25 d5 A3 34
26 d6 A3 34
27 d7 A3 23
28 d8 A3 24
29 d9 A3 37
30 d10 A3 44