R 拆分数据帧并保留共享列

R 拆分数据帧并保留共享列,r,dataframe,dplyr,R,Dataframe,Dplyr,我有一个数据帧 df = data.frame(V1 = 1, V2 = 2, V3 = 3, V4 = 4, V5 = 5, respondent_ID = "ID1", respondent_attribute = "Attribute1") 并希望将其拆分为两个数据帧,其中一个将包含列V1、V2、V3、应答者_ID和应答者_属性,另一个将包含列V4、V5、应答者_ID和应答者_属性 我可以相对容易地使用 newdf <- subset(df, select = c(1:3, 6:7

我有一个数据帧

df = data.frame(V1 = 1, V2 = 2, V3 = 3, V4 = 4, V5 = 5, respondent_ID = "ID1", respondent_attribute = "Attribute1")
并希望将其拆分为两个数据帧,其中一个将包含列V1、V2、V3、应答者_ID和应答者_属性,另一个将包含列V4、V5、应答者_ID和应答者_属性

我可以相对容易地使用

newdf <- subset(df, select = c(1:3, 6:7))

但我怀疑有一个更优雅(或许更好的实践)的解决方案。有什么建议吗?

如果您这样做,您可以更好地控制:

df = data.frame(V1 = 1, V2 = 2, V3 = 3, V4 = 4, V5 = 5, respondent_ID = "ID1", respondent_attribute = "Attribute1")

# Alternative 1
newdf1 <- df[,c("V1", "V2", "V3", "respondent_ID", "respondent_attribute")]
newdf2 <- df[,c("V4", "V5", "respondent_ID", "respondent_attribute")]

# Alternative 2
newdf1 <- df[,c(1:3, 6:7)]
newdf2 <- df[,c(4:5, 6:7)]
df=data.frame(V1=1,V2=2,V3=3,V4=4,V5=5,应答者_ID=“ID1”,应答者_attribute=“Attribute1”)
#备选案文1

新的DF1您可以只使用形式
df[,c(1,2,3,6,7)]
df[,c(“V1”、“V2”、“V3”、“应答者ID”、“应答者属性”)]
(第二个也可以使用类似的形式),这取决于您是否知道列索引。我认为这是有意义的。您的方法也适用于
newdf1
df = data.frame(V1 = 1, V2 = 2, V3 = 3, V4 = 4, V5 = 5, respondent_ID = "ID1", respondent_attribute = "Attribute1")

# Alternative 1
newdf1 <- df[,c("V1", "V2", "V3", "respondent_ID", "respondent_attribute")]
newdf2 <- df[,c("V4", "V5", "respondent_ID", "respondent_attribute")]

# Alternative 2
newdf1 <- df[,c(1:3, 6:7)]
newdf2 <- df[,c(4:5, 6:7)]