相关疑难解决方法(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万
查看次数

笛卡尔积产品数据框

我有三个或更多的自变量表示为R向量,如下所示:

A <- c(1,2,3)
B <- factor(c('x','y'))
C <- c(0.1,0.5)
Run Code Online (Sandbox Code Playgroud)

我想采用所有这些产品的笛卡尔积,并将结果放入数据框中,如下所示:

A B C
1 x 0.1
1 x 0.5
1 y 0.1
1 y 0.5
2 x 0.1
2 x 0.5
2 y 0.1
2 y 0.5
3 x 0.1
3 x 0.5
3 y 0.1
3 y 0.5
Run Code Online (Sandbox Code Playgroud)

我可以通过手动写出调用来执行此操作rep:

d <- data.frame(A = rep(A, times=length(B)*length(C)),
                B = rep(B, times=length(A), each=length(C)),
                C = rep(C, each=length(A)*length(B))
Run Code Online (Sandbox Code Playgroud)

但是必须有更优雅的方式去做,是吗? productitertools部分工作中,但我找不到任何方法来吸收迭代器的输出并将其放入数据框中.有什么建议?

ps此计算的下一步看起来像

d$D <- f(d$A, d$B, d$C)
Run Code Online (Sandbox Code Playgroud)

所以如果你知道一次做两个步骤的方法,这也会有所帮助.

r dataframe

58
推荐指数
5
解决办法
4万
查看次数

替代expand.grid for data.frames

我有一个data.frame df,我希望这里的每一行df都是重复的lengthTime次数,并且添加了一个新的列,从1开始lengthTime计算每行df.

我知道,这听起来很复杂,但我基本上要为申请expand.griddf.这是一个丑陋的解决方法,我觉得有一个更简单的解决方案(甚至可能是一个base-R函数?):

df <- data.frame(ID   = rep(letters[1:3], each=3),
                 CatA = rep(1:3, times = 3),
                 CatB = letters[1:9])
lengthTime <- 3
nrRow <- nrow(df)
intDF <- df
for (i in 1:(lengthTime - 1)) {
  df <- rbind(df, intDF)
}
df$Time <- rep(1:lengthTime, each=nrRow)
Run Code Online (Sandbox Code Playgroud)

我以为我可以使用expand.grid(df, 1:lengthTime),但这不起作用.outer也没带任何运气.那么有谁知道一个好的解决方案?

r

32
推荐指数
4
解决办法
1万
查看次数

标签 统计

r ×3

dataframe ×2

join ×1

merge ×1

r-faq ×1