如果另一个变量中的值在dplyr中的列表中不匹配,则擦除一个变量中的值

巴斯蒂安

我有一个包含两个字段的表:

dd <- data.frame(measure = c("a", "a", "b", "b", "c", "c"), class = c(1,11,2,22,3,33), stringsAsFactors = F)
dd
  measure class
1       a     1
2       a    11
3       b     2
4       b    22
5       c     3
6       c    33

对于每个measure,一个class关联。但是,并非所有class都可以与每个measure相关联实际上,每个度量唯一允许的值在中可用list

ls <- list(a=c(1,10), b=c(2,20,200), c=c(3,30,90))
ls
$`a`
[1]  1 10

$b
[1]   2  20 200

$c
[1]  3 30 90

我需要删除(用NA代替),该类在列表中不匹配的度量。我在R基数上成功:

good_match <- mapply(function(xx, yy) any(xx %in% yy), ls[dd$measure], dd$class)
dd$measure[!good_match] <- NA
dd
  measure class
1       a     1
2    <NA>    11
3       b     2
4    <NA>    22
5       c     3
6    <NA>    33

但是,我想在中使用dplyr,可能是用来完成的mutate,因此我可以通过管道进行传输并使它更适合我的脚本。我试过了:

library(dplyr)
dd %>%  mutate(measure = ifelse(any(class %in% ls[[measure]]), measure, NA))
Error in ls[[measure]] : recursive indexing failed at level 2

我感觉它由于某种矢量化问题而失败,但是我被卡住了。您知道实现我的目标的另一种更优雅的方式吗?

阿克伦

将named转换为listtibble / data.frame后,我们可以使用联接

library(tidyverse)
enframe(ls,  value = 'class') %>%
   unnest %>%
   right_join(dd, by = 'class') %>%
   transmute(measure = name, class)
# A tibble: 6 x 2
#  measure class
#  <chr>   <dbl>
#1 a           1
#2 <NA>       11
#3 b           2
#4 <NA>       22
#5 c           3
#6 <NA>       33

一个base R选项将使用stack(而不是enframe)和merge

注意:ls是函数的名称。最好不要用函数名来命名对象标识符

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

php变量中另一个变量的值

使用另一个列表中的索引更改列表中变量的值

在R dplyr中按另一个变量的唯一值进行分组

创建由R中的另一个变量分组的变量的所有值的列表

如何分配一个变量的值从另一个文件中的变量?

用另一个变量的值替换一个变量中的NA

根据dplyr中另一个变量的子集更改值

如果匹配另一个列表中的值,则提取字符串

如果单元格值与另一个列表中的条目匹配,则复制链接

在一个类中设置变量并将值返回给另一个类

Python:将一个列表中的值匹配到另一个列表中的值序列

如果列值与另一个DF列表中的值匹配,则将值添加到DF

如何获取存储在jQuery中另一个变量中的变量的值

如何根据 R 中另一个变量的值更改变量中的值?

当另一个列与SQL中的列表中的值匹配时更新列值

选择一个变量在组中的另一个变量中不同时出现的观察值(SQL)

如何在R中创建一个新变量,如果一个案例缺少一个值而另一个变量具有一个观察到的值,则返回1?

Python:比较列表中的值(如果存在于另一个列表中)

在另一个列表中搜索列表值

如何在javascript中更改另一个文件中的文件中的值变量

匹配另一个表中的值

如果 Firebase 中的另一个子值匹配,如何获取子值?

如何将一个值设置为一个类中的变量并从另一个类中获取该变量的值?

在javascript中从另一个列表中减去一个列表的值

从另一个列表中的一个列表中查找任何值

如何将变量的值绑定到php中的另一个变量

将变量中的值设置为NA,条件是另一个变量

如何在 Kotlin 中为变量分配另一个变量的值?

如何将变量的值移动到汇编中的另一个变量