R语言 如何操作数据框中的事例和变量

wqsoz72f  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(114)

我只是在学习数据争论。目前我正在数据争论一个6422个观察和20个变量的数据框架。
我已经添加了一个例子来说明我的问题。我有几个列有相同的情况,我想总结为一个情况(在例子中列x1,x2,x3,x4和行1,2,3)。相应的列value1(在例子1,2,3)和value2(在例子7,8,9)应该以这样的方式处理,使它们转换到同一行。
我的目标是将 Dataframe df1转换为 Dataframe df7

df1 <- data.frame(x1,x2,x3,x4,stats.title,value1,value2)

#   x1 x2 x3 x4 stats.title value1 value2
#1  A  B  C  D           I      1      7
#2  A  B  C  D           J      2      8
#3  A  B  C  D           K      3      9
#4  E  F  G  H           I      4     10
#5  E  F  G  H           J      5     11
#6  E  F  G  H           K      6     12

df 7 <- rbind(df5,df6)
#   x1 x2 x3 x4 value1_I value1_J value1_K value2_I value2_J value2_K
#1  A  B  C  D        1        2        3        7        8        9
#4  E  F  G  H        4        5        6       10       11       12

附例:

library(magrittr)
library(dplyr)
library(tidyr)

x1 <- rep(c("A","E"), each=3)
x2<-  rep(c("B","F"), each=3)
x3<-  rep(c("C","G"), each=3)
x4<-  rep(c("D","H"), each=3)
stats.title <- rep(c("I","J","K"), times=2)
value1 <- (1:6)
value2 <- (7:12)

df1 <- data.frame(x1,x2,x3,x4,stats.title,value1,value2)

#   x1 x2 x3 x4 stats.title value1 value2
#1  A  B  C  D           I      1      7
#2  A  B  C  D           J      2      8
#3  A  B  C  D           K      3      9
#4  E  F  G  H           I      4     10
#5  E  F  G  H           J      5     11
#6  E  F  G  H           K      6     12

df2 <- df1[1,] %>% select(-stats.title,-value1,-value2)
#   x1 x2 x3 x4
#1  A  B  C  D
df2.1 <- df1[4,] %>% select(-stats.title,-value1,-value2)
#  x1 x2 x3 x4
#4  E  F  G  H

df3 <- df1 %>% select(stats.title,value1,value2)
#   stats.title value1 value2
#1           I      1      7
#2           J      2      8
#3           K      3      9
#4           I      4     10
#5           J      5     11
#6           K      6     12

df4 <- pivot_wider(df3[1:3,], names_from = stats.title, values_from = c("value1","value2")) 
df4 <- as.data.frame(df4)
df4.1 <- pivot_wider(df3[4:6,], names_from = stats.title, values_from = c("value1","value2")) 
df4.1 <- as.data.frame(df4.1)

df5 <- data.frame(df2,df4)
df6 <- data.frame(df2.1,df4.1)
df 7 <- rbind(df5,df6)
#   x1 x2 x3 x4 value1_I value1_J value1_K value2_I value2_J value2_K
#1  A  B  C  D        1        2        3        7        8        9
#4  E  F  G  H        4        5        6       10       11       12

提前感谢你的帮助。
我尝试了上面的例子。由于我有6422行,我正在寻找一种有效的方法来操纵 Dataframe 。

qpgpyjmq

qpgpyjmq1#

你表现出了足够的努力:解决方案如下:诀窍是先给pivot_longer
第一个

相关问题