Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.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_Dataset_Transpose - Fatal编程技术网

转置R数据帧,保持前两列作为标识符

转置R数据帧,保持前两列作为标识符,r,dataset,transpose,R,Dataset,Transpose,我有一个更大的数据集,但是为了这个例子,我制作了这个更小的数据集。我的数据集如下所示 df <- data.frame(ID = c(1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3), APPT_ID = c(11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14), Variable = c(letters[1:3], letters[1:3], lett

我有一个更大的数据集,但是为了这个例子,我制作了这个更小的数据集。我的数据集如下所示

 df <- data.frame(ID = c(1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3),
                  APPT_ID = c(11, 11, 11, 12, 12, 12, 13, 13, 13, 14, 14, 14),
                  Variable = c(letters[1:3], letters[1:3], letters[1:3], letters[1:3]),
                  Value = c(41:52))
前两列ID和APPT_ID是每个观察的标识符,因此我希望将它们作为列进行维护,同时转换后两列变量和值,以便每个变量都是自己的列,显示其值。我希望ID和APPT_ID的每个唯一组合只有一个观察行

我希望我的输出数据集如下所示:

df2 <- data.frame(ID = c(1, 1, 2, 3), APPT_ID = c(11, 12, 13, 14), 
                  a = c(41, 44, 47, 50), b = c(42, 45, 48, 51),
                  c = c(43, 46, 49, 52) )

为什么这样做最好的方法是什么?

我想这样做就行了

library(tidyr)

df %>% 
 spread(Variable, Value)
带整形器2

在base R中,您可以使用:


您可以使用VARINGE参数来控制生成的不同非标识符列的名称。

这是规范数据重塑R的Q&A?可能重复的可能重复的谢谢!这给了我我想要的没有问题-如果你满意的话接受答案
dcast(df, ID+APPT_ID~Variable, value.var="Value")
#   ID APPT_ID  a  b  c
# 1  1      11 41 42 43
# 2  1      12 44 45 46
# 3  2      13 47 48 49
# 4  3      14 50 51 52
reshape(df,dir='w',idvar=c('ID','APPT_ID'),timevar='Variable');
##    ID APPT_ID Value.a Value.b Value.c
## 1   1      11      41      42      43
## 4   1      12      44      45      46
## 7   2      13      47      48      49
## 10  3      14      50      51      52