R 将多个变量合并为新变量/将变量拆分为3个变量
我需要创建一个“key”变量,因为我想合并两个数据集。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
Dataset1具有变量
ymd
数据集2有三个变量
y
、m
和d
ymd (20050516,20060512)
y(2005,2006)
m(05,05)
d(16,12)
两种选择:
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
。添加了示例数据以澄清。希望有帮助。