Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何转换通用数据帧?_R_Dataframe - Fatal编程技术网

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