R中的数据清理:创建;“副本”;

R中的数据清理:创建;“副本”;,r,merge,data-cleaning,R,Merge,Data Cleaning,我得到了以下格式的数据集: DF1 <- data.frame( TakerId = c(1,4,7,10,13), GiverId = c(3,2,11,4,10), Col1= c(24,28,26,20,23), Col2= c(37,31,38,35,39), Col3= c(44,48,43,45,41) ) DF1 TakerId GiverId Col1 Col2 Col3 1 3 24 37 44

我得到了以下格式的数据集:

DF1 <- data.frame(
  TakerId = c(1,4,7,10,13),
  GiverId = c(3,2,11,4,10),
  Col1= c(24,28,26,20,23),
  Col2= c(37,31,38,35,39),
  Col3= c(44,48,43,45,41)
)
DF1

 TakerId GiverId Col1 Col2 Col3
       1       3   24   37   44
       4       2   28   31   48
       7      11   26   38   43
      10       4   20   35   45
      13      10   23   39   41

我们可以
的“Id”列收集成“long”格式,然后从“Role”中去掉“Id”,然后
按所需顺序选择

library(tidyverse)
DF1 %>%
   gather(Role, UserId, TakerId:GiverId) %>%
   mutate(Role = str_sub(Role, 1, 5)) %>% 
   select(UserId, Role, Col1:Col3)
#   UserId  Role Col1 Col2 Col3
#1       1 Taker   24   37   44
#2       4 Taker   28   31   48
#3       7 Taker   26   38   43
#4      10 Taker   20   35   45
#5      13 Taker   23   39   41
#6       3 Giver   24   37   44
#7       2 Giver   28   31   48
#8      11 Giver   26   38   43
#9       4 Giver   20   35   45
#10     10 Giver   23   39   41
library(tidyverse)
DF1 %>%
   gather(Role, UserId, TakerId:GiverId) %>%
   mutate(Role = str_sub(Role, 1, 5)) %>% 
   select(UserId, Role, Col1:Col3)
#   UserId  Role Col1 Col2 Col3
#1       1 Taker   24   37   44
#2       4 Taker   28   31   48
#3       7 Taker   26   38   43
#4      10 Taker   20   35   45
#5      13 Taker   23   39   41
#6       3 Giver   24   37   44
#7       2 Giver   28   31   48
#8      11 Giver   26   38   43
#9       4 Giver   20   35   45
#10     10 Giver   23   39   41