R 如何转换通用数据帧?
我有这个数据框:R 如何转换通用数据帧?,r,dataframe,R,Dataframe,我有这个数据框: freq 1 2 3 4 1 100 10 20 30 40 2 100 0.50 1.00 1.5 2 3 200 50 60 70 80 4 200 2.5 3 3.5 4 我想以这种方式转换此数据帧: freq 1 2 1
freq 1 2 3 4
1 100 10 20 30 40
2 100 0.50 1.00 1.5 2
3 200 50 60 70 80
4 200 2.5 3 3.5 4
我想以这种方式转换此数据帧:
freq 1 2
1 100 10 0.50
2 100 20 1
3 100 30 1.50
4 100 40 2
5 200 50 2.50
6 200 60 3
7 200 70 3.50
8 200 80 4
我该怎么做
我需要一个通用数据帧运行的东西,不仅仅是这种情况。我们可以试试
i1 <- c(TRUE, FALSE)
data.frame(freq = rep(df1$freq, each =(ncol(df1)-1)/2),
`1` = c(t(df1[i1,-1])), `2` = c(t(df1[!i1,-1])), check.names=FALSE)
# freq 1 2
#1 100 10 0.5
#2 100 20 1.0
#3 100 30 1.5
#4 100 40 2.0
#5 200 50 2.5
#6 200 60 3.0
#7 200 70 3.5
#8 200 80 4.0
i1或
使用整数作为列名不是一个好主意。
cbind(
freq = rep(unique(df$freq), each=ncol(df[, -1])),
do.call(rbind, lapply(split(df[, -1], df$freq), function(x) t(x)))
)
# freq 1 2
# 1 100 10 0.5
# 2 100 20 1.0
# 3 100 30 1.5
# 4 100 40 2.0
# 1 200 50 2.5
# 2 200 60 3.0
# 3 200 70 3.5
# 4 200 80 4.0