将多个变量合并为新变量/将变量拆分为3个变量

时间:2020-02-18 17:57:36

标签: r variables split

我需要创建一个“键”变量,因为我想合并两个数据集。
数据集1 具有变量ymd
数据集2 具有三个变量ymd

ymd  (20050516,20060512)  
y(2005,2006)  
m(05,05)
d(16,12)                                              

两个选项:

  1. 将y,m和d合并为变量ymd
  2. 将项目拆分变量ymd列出为3个变量ymd

2 个答案:

答案 0 :(得分:1)

假设您有两个数据帧:

df1 <- data.frame(
  ymd = c(20050516,20060512),
  x = c(1,2)
)

df2 <- data.frame(
  y = c(2005,2006),  
  m = c('05','05'),
  d = c(16,12),
  z = c(5,10)
)

您可以通过使用y粘贴mdpaste0元素并将其更改为数字来合并:

df2 %>%
  mutate(
    ymd = as.numeric(paste0(y,m,d))
  ) %>%
  left_join(df1)

输出:

>
Joining, by = "ymd"
     y  m  d  z      ymd x
1 2005 05 16  5 20050516 1
2 2006 05 12 10 20060512 2

您可以根据需要调整合并(例如right_join)。

答案 1 :(得分:1)

这里有个例子。

我将变量用作字符串而不是数字,这使操作变得更容易。您可以像我的示例一样使用static const Bar& constVar() { static const Bar instance(1); return instance; }; 进行转换。

对于选项1,我仅使用constVar()将文本粘贴在一起。

对于选项2,我使用constVar在核心位置剪切文本。

如果需要输出为数字而不是字符串,则只需使用as.character(),就像在打印功能中一样。

这是代码,如果您还有其他问题,请告诉我:

paste0()