在 R 中重新排列数据框中的信息

标签 r reshape

我有以下 df,它是从 excel 文件中获得的:

df1 <- data.frame( Colour = c("Green","Red","Blue"), 
                   Code = c("N","U", "U"), 
                   User1 = c("John","Brad","Peter"), 
                   User2 = c("Meg","Meg","John"), 
                   User3= c("", "Lucy", ""))

我需要重新排列它以获得一个数据框,其中所有名称都列在第一列(仅一次)并且颜色(和各自的代码)出现在以下列中,如下所示:

df2 <- data.frame(User=c("John","Brad","Peter","Meg","Lucy"),
                  Color1 = c("Green","Red","Blue","Green","Red"),
                  Code1 = c("N","U","U","N","U"), 
                  Color2=c("Blue","","","Red",""),
                  Code2=c("U","","","U",""))

非常感谢您的帮助。非常感谢,

最佳答案

它不是很漂亮,但这是纯基础 R 中的另一个解决方案,它使用了对 reshape() 的几个调用:

reshape(transform(subset(reshape(df1,varying=grep('^User',names(df1)),dir='l',v.names='User'),User!=''),id=NULL,time=ave(c(User),User,FUN=seq_along),User=factor(User)),dir='w',idvar='User',sep='');
##      User Colour1 Code1 Colour2 Code2
## 1.1  John   Green     N    Blue     U
## 2.1  Brad     Red     U    <NA>  <NA>
## 3.1 Peter    Blue     U    <NA>  <NA>
## 1.2   Meg   Green     N     Red     U
## 2.3  Lucy     Red     U    <NA>  <NA>

关于在 R 中重新排列数据框中的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29924579/

相关文章:

r - dplyr 变异根据条件以有效的方式替换单列中的值

r - 对单元格值满足 R 条件的所有行求和

R:对数据框的多列进行行式计算的最快方法

python-2.7 - 超人级别 - 由于重复而 reshape Pandas DataFrame

python - 根据默认大小 reshape np.array

python - 如何reshape()numpy中奇数行和偶数行的总和

r - highcharter 中是否有相当于 geom_ribbon 的东西?

r - 如何在ggplot中引用管道对象?

r - 熔化成两个可变列

r - 将 R 数据帧从长格式转换为宽格式,但组大小不相等,用于 qcc