我需要创建一个'key‘变量,因为我想组合两个数据集。
Dataset1有变量ymd。
Dataset2有三个变量y、m和d。
ymd (20050516,20060512)
y(2005,2006)
m(05,05)
d(16,12) 有两种选择:
d.
ymd组合成三个变量y、m和ymd。发布于 2020-02-18 18:36:14
假设您有两个数据框架:
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、m和d元素粘贴在一起并更改为数字来进行合并:
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)。
发布于 2020-02-18 18:36:51
这里有一个例子。
我使用变量作为字符串而不是数字,这使它更容易。您可以像在我的示例中一样使用as.character()来转换它。
对于选项1,我只使用paste0()将文本粘贴在一起。
对于选项2,我使用substr()在corect位置剪切文本。
如果需要输出为数字而不是字符串,只需像我在打印函数中那样使用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)https://stackoverflow.com/questions/60286877
复制相似问题