给出两个数据框:
df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)))
df2 = data.frame(CustomerId = c(2, 4, 6), State = c(rep("Alabama", 2), rep("Ohio", 1)))
df1
# CustomerId Product
# 1 Toaster
# 2 Toaster
# 3 Toaster
# 4 Radio
# 5 Radio
# 6 Radio
df2
# CustomerId State
# 2 Alabama
# 4 Alabama
# 6 Ohio
Run Code Online (Sandbox Code Playgroud)
我怎样才能做数据库风格,即sql风格,加入?也就是说,我该怎么做:
这个问题在某种程度上与问题有关,问题是在非平凡的标准上有效地合并两个数据框,并检查日期是否在r中的两个日期之间.我在这里发布的请求该功能是否存在: GitHub问题
我希望加入两个数据帧dplyr::left_join().我用来加入的条件是小于,大于ie,<=和>.是否dplyr::left_join()支持这种功能?或者只=在这些键之间使用操作符.这很容易从SQL运行(假设我在数据库中有数据帧)
这是一个MWE:我有一个公司年(fdata)的两个数据集,而第二个是每五年发生一次的调查数据.因此,对于fdata两个调查年份之间的所有年份,我加入相应的调查年度数据.
id <- c(1,1,1,1,
2,2,2,2,2,2,
3,3,3,3,3,3,
5,5,5,5,
8,8,8,8,
13,13,13)
fyear <- c(1998,1999,2000,2001,1998,1999,2000,2001,2002,2003,
1998,1999,2000,2001,2002,2003,1998,1999,2000,2001,
1998,1999,2000,2001,1998,1999,2000)
byear <- c(1990,1995,2000,2005)
eyear <- c(1995,2000,2005,2010)
val <- c(3,1,5,6)
sdata <- tbl_df(data.frame(byear, eyear, val))
fdata <- tbl_df(data.frame(id, fyear))
test1 <- left_join(fdata, sdata, by = c("fyear" >= "byear","fyear" < "eyear"))
Run Code Online (Sandbox Code Playgroud)
我明白了
Run Code Online (Sandbox Code Playgroud)Error: cannot join on columns 'TRUE' x 'TRUE': index out of bounds
除非left_join能处理这个条件,但我的语法遗漏了什么?
我正在尝试运行以下代码。每当我尝试运行代码时,都会出现以下错误:Error in eval(expr, envir, enclos) : could not find function "."
如何修复?有人可以帮忙吗?
data(mtcars)
library(data.table)
mtcarsDT <- data.table(mtcars)
mtcarsDT[ mpg > 20,
.(AvgHP = mean(hp),
"MinWT(kg)" = min(wt * 453.6)), # wt lbs
by = .(cyl, under5gears = gear < 5)
]
Run Code Online (Sandbox Code Playgroud)
这是会话信息
> sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-apple-darwin10.8.0 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] data.table_1.9.2
loaded via a namespace (and not attached):
[1] digest_0.6.8 …Run Code Online (Sandbox Code Playgroud) 我想根据多个条件合并 2 个数据框。
DF1 <- data.frame("col1" = rep(c("A","B"), 18),
"col2" = rep(c("C","D","E"), 12),
"value"= (sample(1:100,36)),
"col4" = rep(NA,36))
DF2 <- data.frame("col1" = rep("A",6),
"col2" = rep(c("C","D"),3),
"data" = rep(c(1,3),3),
"min" = seq(0,59,by=10),
"max" = seq(10,69,by=10))
> DF1
col1 col2 value col4
1 A C 22 NA
2 B D 58 NA
3 A E 35 NA
4 B C 86 NA
5 A D 37 NA
6 B E 16 NA
7 A C 46 NA
8 B D 23 …Run Code Online (Sandbox Code Playgroud) 这个问题是关于理解,我要投资我的学习精力用于数据R.之间扯皮具体dplyr,dtplyr和data.table。我dplyr主要使用数据,但是当数据太大而无法使用时data.tabe,这种情况很少发生。因此,现在dtplyrv1.0已成为的接口data.table,从表面上看,我似乎再也不需要担心data.table再次使用该接口。
那么,目前尚不能使用的最有用的功能或方面data.table是什么dtplyr,而将来可能永远无法使用dtplyr?
从表面上看,dplyr借助的好处,data.table它听起来像dtplyr会超越dplyr。会不会有任何理由来使用dplyr,一旦dtplyr已经完全成熟?
注意:我不是在问dplyrvs data.table(就像在data.table vs dplyr中:一个人可以做得很好而另一个不能做得不好或做得不好吗?),但是鉴于在一个特定问题上一个人比另一个人更受青睐,为什么呢?牛逼dtplyr是使用工具。