相关疑难解决方法(0)

如何加入(合并)数据框(内部,外部,左侧,右侧)?

给出两个数据框:

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风格,加入?也就是说,我该怎么做:

  • 一个内连接df1df2:
    只返回行中左表在右表匹配的密钥.
  • 一个外连接df1df2:
    返回两个表中的所有行,从有右表中的匹配键左连接记录.
  • 甲 …

merge join r dataframe r-faq

1155
推荐指数
13
解决办法
108万
查看次数

dplyr left_join小于,大于条件

这个问题在某种程度上与问题有关,问题是在非平凡的标准上有效地合并两个数据框,检查日期是否在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)

我明白了

Error: cannot join on columns 'TRUE' x 'TRUE': index out of bounds 
Run Code Online (Sandbox Code Playgroud)

除非left_join能处理这个条件,但我的语法遗漏了什么?

sql postgresql r left-join dplyr

17
推荐指数
4
解决办法
2万
查看次数

数据表错误找不到函数“。”

我正在尝试运行以下代码。每当我尝试运行代码时,都会出现以下错误: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)

r data.table

6
推荐指数
1
解决办法
2万
查看次数

R:基于多个条件合并(具有不相等的条件)

我想根据多个条件合并 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)

merge r dataframe

5
推荐指数
2
解决办法
1万
查看次数

我无法在data.table中使用dtplyr做什么

这个问题是关于理解,我要投资我的学习精力用于数据R.之间扯皮具体dplyrdtplyrdata.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是使用工具。

r dplyr data.table dtplyr

3
推荐指数
3
解决办法
251
查看次数

标签 统计

r ×5

data.table ×2

dataframe ×2

dplyr ×2

merge ×2

dtplyr ×1

join ×1

left-join ×1

postgresql ×1

r-faq ×1

sql ×1