R 重新调整起始目标数据的形状

R 重新调整起始目标数据的形状,r,dplyr,reshape,R,Dplyr,Reshape,我需要打开此数据帧: df1使用baseR(这可能需要引入一个或多个空格)。还假设来回值是连续输入的 new_df<-cbind(df[seq(1,nrow(df), by=2),], df[seq(2,nrow(df), by=2),])[,-c(4,5)] names(new_df)<-c("A","B","AtoB","BtoA") new_df 一个选项是根据每行中的最小值在“A”和“B”之间创建一个标识符列,标签为“AtoB/BtoA”,然后通过为每行取min/m

我需要打开此数据帧:

df1使用
base
R(这可能需要引入一个或多个空格)。还假设来回值是连续输入的

 new_df<-cbind(df[seq(1,nrow(df), by=2),], df[seq(2,nrow(df), by=2),])[,-c(4,5)]
names(new_df)<-c("A","B","AtoB","BtoA")  
new_df

一个选项是根据每行中的最小值在“A”和“B”之间创建一个标识符列,标签为“AtoB/BtoA”,然后通过为每行取
min/max
pmin/pmax
)和
spread
将输出返回到“宽”格式来更改“A”、“B”中的值

library(dplyr)
library(tidyr)
df1 %>%      
  mutate(grpIdent = case_when(A == pmin(A, B) ~ 'AtoB', TRUE ~ 'BtoA'),
         A1= pmin(A, B), B1 = pmax(A, B)) %>%
  select(A = A1, B = B1, grpIdent, Flow) %>%
  spread(grpIdent, Flow)
#   A B AtoB BtoA
#1 1 2   50   30
#2 3 4   20   NA

请与
dput分享示例数据
抱歉,我有点费劲,因为我在这里没有问太多问题。我用dput编辑了我的问题,这是你需要的吗?
 new_df<-cbind(df[seq(1,nrow(df), by=2),], df[seq(2,nrow(df), by=2),])[,-c(4,5)]
names(new_df)<-c("A","B","AtoB","BtoA")  
new_df
# A B AtoB BtoA
#1 1 2   50   30
#3 3 4   20   30
library(dplyr)
library(tidyr)
df1 %>%      
  mutate(grpIdent = case_when(A == pmin(A, B) ~ 'AtoB', TRUE ~ 'BtoA'),
         A1= pmin(A, B), B1 = pmax(A, B)) %>%
  select(A = A1, B = B1, grpIdent, Flow) %>%
  spread(grpIdent, Flow)
#   A B AtoB BtoA
#1 1 2   50   30
#2 3 4   20   NA