如何使用R转换列中的行
我是新来的,我有一个类似的数据集:如何使用R转换列中的行,r,data-analysis,R,Data Analysis,我是新来的,我有一个类似的数据集: df <- data.frame(x = c(30, 1017, 1527, 1827,10496, 10794, 11270, 12261), y = c(4.1, 2.6, 1.7, 1.1, 0.9, 1.1, 1.4, 3.1), cod = c(3011, 3011, 3011, 3011, 3011, 3011, 3011, 2043), l
df <- data.frame(x = c(30, 1017, 1527, 1827,10496, 10794, 11270, 12261),
y = c(4.1, 2.6, 1.7, 1.1, 0.9, 1.1, 1.4, 3.1),
cod = c(3011, 3011, 3011, 3011, 3011, 3011, 3011, 2043),
label = c('start', 'start1', 'start2', 'start3', 'start4', 'start5', 'start6', 'start7'))
df
x y cod label
1 30 4.1 3011 start
2 1017 2.6 3011 start1
3 1527 1.7 3011 start2
4 1827 1.1 3011 start3
5 10496 0.9 3011 start4
6 10794 1.1 3011 start5
7 11270 1.4 3011 start6
8 12261 3.1 2043 start7
我们可以使用
data.table::transpose
data.table::transpose(df, make.names = 'label')
# start start1 start2 start3 start4 start5 start6 start7
#1 30.0 1017.0 1527.0 1827.0 10496.0 10794.0 11270.0 12261.0
#2 4.1 2.6 1.7 1.1 0.9 1.1 1.4 3.1
#3 3011.0 3011.0 3011.0 3011.0 3011.0 3011.0 3011.0 2043.0
在整洁的房间里
df %>%
gather(key = "x.y.cod", value = "scratch", "x", "y", "cod") %>%
spread(label, value = scratch)
x.y.cod start start1 start2 start3 start4 start5 start6 start7
1 cod 3011.0 3011.0 3011.0 3011.0 3011.0 3011.0 3011.0 2043.0
2 x 30.0 1017.0 1527.0 1827.0 10496.0 10794.0 11270.0 12261.0
3 y 4.1 2.6 1.7 1.1 0.9 1.1 1.4 3.1
使用
data.table
的melt
/dcast
library(data.table)
dcast(melt(setDT(df), id.vars = 'label'), variable~label, value.var = 'value')
# variable start start1 start2 start3 start4 start5 start6 start7
#1: x 30.0 1017.0 1527.0 1827.0 10496.0 10794.0 11270.0 12261.0
#2: y 4.1 2.6 1.7 1.1 0.9 1.1 1.4 3.1
#3: cod 3011.0 3011.0 3011.0 3011.0 3011.0 3011.0 3011.0 2043.0
考虑<代码>整形<代码>
library(data.table)
dcast(melt(setDT(df), id.vars = 'label'), variable~label, value.var = 'value')
# variable start start1 start2 start3 start4 start5 start6 start7
#1: x 30.0 1017.0 1527.0 1827.0 10496.0 10794.0 11270.0 12261.0
#2: y 4.1 2.6 1.7 1.1 0.9 1.1 1.4 3.1
#3: cod 3011.0 3011.0 3011.0 3011.0 3011.0 3011.0 3011.0 2043.0