小编akh*_*med的帖子

dplyr错误:组合group_by,mutate和ifelse时的奇怪问题.这是一个错误吗?

我在dplyr以及group_by,mutate和ifelse的组合方面遇到了奇怪的问题.请考虑以下data.frame

> df1
  crawl.id group.id hits.diff
1        1        1        NA
2        1        2        NA
3        2        2         0
4        1        3        NA
5        1        3        NA
6        1        3        NA
Run Code Online (Sandbox Code Playgroud)

当我使用它时,以下代码

library(dplyr)
df1 %>%
  group_by(group.id) %>% 
  mutate( hits.consumed = ifelse(hits.diff<=0,-hits.diff,0) )
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我得到了

Error: incompatible types, expecting a logical vector**
Run Code Online (Sandbox Code Playgroud)

但是,删除任何一个group_by()ifelse一切按预期工作:

df1 %>%
  mutate( hits.consumed = ifelse(hits.diff<=0,-hits.diff,0) )

crawl.id group.id hits.diff hits.consumed
1        1        1        NA            NA
2        1        2        NA            NA
3        2        2         0             0 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

21
推荐指数
1
解决办法
4265
查看次数

dplyr +"meta"-columns:当列包含要使用的其他列的名称而不是数据时

我想知道以下问题是否在dplyr中有一个优雅的解决方案.

要提供简单的可重现示例,请考虑以下data.frame:

df <- data.frame( a=1:5, b=2:6, c=3:7,
                  ref=c("a","a","b","b","c"), 
                  stringsAsFactors = FALSE )
Run Code Online (Sandbox Code Playgroud)

这里a,b,c是常规数值变量,同时ref意味着引用其列是该观察"主"的价值.例如:

  a b c ref
1 1 2 3   a
2 2 3 4   a
3 3 4 5   b
4 4 5 6   b
5 5 6 7   c
Run Code Online (Sandbox Code Playgroud)

例如,对于观察3,ref==b因此列b包含主要值.而对于观察1,ref==a因此列a包含主要值.

有了这个data.frame,问题就是main使用dplyr 创建每个观察值的新列.

  a b c ref main
1 1 2 3   a    1
2 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

标签 统计

dplyr ×2

r ×2