Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将多个变量合并为新变量/将变量拆分为3个变量_R_Variables_Split - Fatal编程技术网

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

R 将多个变量合并为新变量/将变量拆分为3个变量,r,variables,split,R,Variables,Split,我需要创建一个“key”变量,因为我想合并两个数据集。 Dataset1具有变量ymd 数据集2有三个变量y、m和d ymd (20050516,20060512) y(2005,2006) m(05,05) d(16,12) 两种选择: 将y、m和d组合成变量ymd 将项目plit变量ymd列为3个变量y、m和d 假设您有两个数据帧: df1 <- data.frame( ymd

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

数据集2有三个变量
y
m
d

ymd  (20050516,20060512)  
y(2005,2006)  
m(05,05)
d(16,12)                                              
两种选择:

  • 将y、m和d组合成变量ymd
  • 将项目plit变量
    ymd
    列为3个变量
    y
    m
    d

  • 假设您有两个数据帧:

    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)
    )
    
    输出:

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

    您可以根据自己的需要调整合并(例如
    右键连接
    )。

    假设您有两个数据帧:

    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)
    )
    
    输出:

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

    您可以根据自己的需要调整合并(例如
    右键加入
    )。

    这里有一个示例

    我使用变量作为字符串而不是数字,这使它更容易。您可以像在我的示例中一样使用
    as.character()
    对其进行转换

    对于选项1,我只使用
    paste0()
    将文本粘贴在一起

    对于选项2,我使用
    substr()
    在核心位置剪切文本

    如果您需要输出为数字而不是字符串,只需像我在print函数中所做的那样使用
    as.numeric()

    这是代码,如果您有进一步的问题,请告诉我:

    ymd=as.character(c(20050516,20060512))
    y=as.character(c(2005,2006))
    m=as.character(c(05,05))
    d=as.character(c(16,12))
    
    ## Concatenade y, m, and d together
    ymd_concatenated=paste0(y,m,d)
    print(as.numeric(ymd_concatenated))
    
    ## Split ymd into single variables
    y_concatenated=c()
    m_concatenated=c()
    d_concatenated=c()
    for (date in ymd)
    {
      y_concatenated=c(y_concatenated,substr(date,1,4))
      m_concatenated=c(m_concatenated,substr(date,5,6))
      d_concatenated=c(d_concatenated,substr(date,7,8))
    }
    print(y_concatenated)
    print(m_concatenated)
    print(d_concatenated)
    

    这里有一个例子

    我使用变量作为字符串而不是数字,这使它更容易。您可以像在我的示例中一样使用
    as.character()
    对其进行转换

    对于选项1,我只使用
    paste0()
    将文本粘贴在一起

    对于选项2,我使用
    substr()
    在核心位置剪切文本

    如果您需要输出为数字而不是字符串,只需像我在print函数中所做的那样使用
    as.numeric()

    这是代码,如果您有进一步的问题,请告诉我:

    ymd=as.character(c(20050516,20060512))
    y=as.character(c(2005,2006))
    m=as.character(c(05,05))
    d=as.character(c(16,12))
    
    ## Concatenade y, m, and d together
    ymd_concatenated=paste0(y,m,d)
    print(as.numeric(ymd_concatenated))
    
    ## Split ymd into single variables
    y_concatenated=c()
    m_concatenated=c()
    d_concatenated=c()
    for (date in ymd)
    {
      y_concatenated=c(y_concatenated,substr(date,1,4))
      m_concatenated=c(m_concatenated,substr(date,5,6))
      d_concatenated=c(d_concatenated,substr(date,7,8))
    }
    print(y_concatenated)
    print(m_concatenated)
    print(d_concatenated)
    

    显示您尝试过的代码使用编辑按钮编辑完整代码,并将代码添加到您的问题中。这就是我的全部,我对R非常陌生。您能告诉我您试图实现什么吗?如上所述,我想创建一个关键变量,允许我合并两个数据集。因此,我需要将y、m和d组合成变量ymd,或者将ymd分解成三个变量y、m和d。如何使用编辑按钮编辑您的完整代码,并将该代码添加到您的问题中。这就是我所拥有的全部,我对R非常陌生。您能告诉我您试图实现的目标吗,我想创建一个键变量,它允许我合并两个数据集。因此,我需要将y,m和d组合成变量ymd,或者将ymd分解成三个变量y,m和d谢谢,我试过了,但是我弄错了。weatherdate%mutate(weatherdata$yearmoda=as.numeric(paste0(dates$year,dates$month,dates$dayofmonth))%>%left_join(weatherdata)错误消息是:left_join中的错误(tbl_df(x),y,by=by,copy=copy,…):缺少参数“y”,没有默认值>(1)不需要管道中的任何
    $
    符号,因为一切都是从
    dataset2
    dates
    流出来的。(2)
    left_join
    应该引用另一个数据集,您在原始帖子中称之为
    dataset1
    。添加了示例数据以澄清。希望能有帮助。谢谢,我试过了,但我弄错了。weatherdate%mutate(weatherdata$yearmoda=as.numeric(paste0(dates$year,dates$month,dates$dayofmonth))%>%left_join(weatherdata)错误消息是:left_join中的错误(tbl_df(x),y,by=by,copy=copy,…):缺少参数“y”,没有默认值>(1)不需要管道中的任何
    $
    符号,因为一切都是从
    dataset2
    dates
    流出来的。(2)
    left_join
    应该引用另一个数据集,您在原始帖子中称之为
    dataset1
    。添加了示例数据以澄清。希望有帮助。