我有一个像这样的数据框
library(tidyverse)
df3 <- tibble(col1 = c("apple",rep("banana",3)),
col2 = c("aple", "banan","bananb","banat"),
count_col1 = c(1,4,4,4),
count_col2 = c(4,1,1,1))
df3
#> # A tibble: 4 × 4
#> col1 col2 count_col1 count_col2
#> <chr> <chr> <dbl> <dbl>
#> 1 apple aple 1 4
#> 2 banana banan 4 1
#> 3 banana bananb 4 1
#> 4 banana banat 4 1
由reprex包(v2.0.1)于2022-02-17创建
我想group_by col1,当count_col2
当count_col1
我希望我的数据看起来像这样
#> # A tibble: 4 × 4
#> col1 col2 count_col1 count_col2
#> <chr> <chr> <dbl> <dbl>
#> 1 NA aple 1 4
#> 2 banana NA 4 1
#> 3 banana NA 4 1
#> 4 banana NA 4 1
我不确定这是否可以通过变异(case_when…)来实现。到目前为止,我失败了
df3 %>%
group_by(col1) %>%
mutate(case_when(count_col2 > count_col1 ~ col1==NA,
count_col1 > count_col2 ~ col2==NA ))
我不确定您是否真的需要在这里使用<code>group_。在一个“群体”内没有发生任何事情。
这是一个基本的R选项-
df3$col1[df3$count_col2 > df3$count_col1] <- NA
df3$col2[df3$count_col1 > df3$count_col2] <- NA
df3
# col1 col2 count_col1 count_col2
# <chr> <chr> <dbl> <dbl>
#1 NA aple 1 4
#2 banana NA 4 1
#3 banana NA 4 1
#4 banana NA 4 1
您可以使用ifelse()
实现所需的输出,即
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
df3 <- tibble(col1 = c("apple",rep("banana",3)),
col2 = c("aple", "banan","bananb","banat"),
count_col1 = c(1,4,4,4),
count_col2 = c(4,1,1,1))
df3
#> # A tibble: 4 × 4
#> col1 col2 count_col1 count_col2
#> <chr> <chr> <dbl> <dbl>
#> 1 apple aple 1 4
#> 2 banana banan 4 1
#> 3 banana bananb 4 1
#> 4 banana banat 4 1
df3 %>%
group_by(col1) %>%
mutate(col1 = ifelse(count_col2 > count_col1, NA, col1),
col2 = ifelse(count_col1 > count_col2, NA, col2))
#> # A tibble: 4 × 4
#> # Groups: col1 [2]
#> col1 col2 count_col1 count_col2
#> <chr> <chr> <dbl> <dbl>
#> 1 <NA> aple 1 4
#> 2 banana <NA> 4 1
#> 3 banana <NA> 4 1
#> 4 banana <NA> 4 1
由reprex包(v2.0.1)于2022-02-18创建
或者使用case_when()
:
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
df3 <- tibble(col1 = c("apple",rep("banana",3)),
col2 = c("aple", "banan","bananb","banat"),
count_col1 = c(1,4,4,4),
count_col2 = c(4,1,1,1))
df3
#> # A tibble: 4 × 4
#> col1 col2 count_col1 count_col2
#> <chr> <chr> <dbl> <dbl>
#> 1 apple aple 1 4
#> 2 banana banan 4 1
#> 3 banana bananb 4 1
#> 4 banana banat 4 1
df3 %>%
group_by(col1) %>%
mutate(col1 = case_when(count_col2 > count_col1 ~ NA_character_,
TRUE ~ col1),
col2 = case_when(count_col1 > count_col2 ~ NA_character_,
TRUE ~ col2))
#> # A tibble: 4 × 4
#> # Groups: col1 [2]
#> col1 col2 count_col1 count_col2
#> <chr> <chr> <dbl> <dbl>
#> 1 <NA> aple 1 4
#> 2 banana <NA> 4 1
#> 3 banana <NA> 4 1
#> 4 banana <NA> 4 1
由reprex包(v2.0.1)于2022-02-18创建
这能解决你的问题吗?
我最近在CodeWars中遇到了这个问题 给定一个数字串,您应该用“0”替换5以下的任何数字,用“1”替换5及以上的任何数字。返回结果字符串。注意:输入永远不会是空字符串 我来自 Python 背景,我们可以使用 if 语句进行索引来解决这个特定问题,如下所示: 但当我尝试在Swift中使用索引(如Python风格)时,我失败了……经过一段时间的研究,我发现了这个方法:<code>String。r
请帮我把CLOB转换成C#代码中的字符串。
我展示了一个包含JSON的数组,并直接用超文本标记语言展示了这个数组,在这里你可以找到。它给NaN作为输出。 这是我的超文本标记语言:
问题内容: 基本上,我的问题与这一问题相同,但是对于Java的(JBoss)Hibernate:我们如何使用hibernate标准API将列作为int排序?我想创建一个从字符串列转换为int的订单限制。就像是 唯一的例外是“无法解析属性:[Class]的演员表(id为int)”。我已经尝试过使用int和integer进行cast(as)和convert(,)。 问题答案: 尽管主题很旧,可能是问题
本文向大家介绍如何将R数据帧中的字符串转换为NA?,包括了如何将R数据帧中的字符串转换为NA?的使用技巧和注意事项,需要的朋友参考一下 我们经常会在数据收集过程中发现错误,这些错误可能会导致研究结果不正确。当错误地收集数据时,将使分析师的工作变得困难。显示数据有错误的一种情况是获取字符串代替数字值。因此,我们需要将这些字符串转换为R中的NA,以便我们可以进行预期的分析。 示例 请看以下数据帧- 将
问题内容: 我想在GO中将字符串数组转换为字节数组,以便可以将其写到磁盘上。将字符串数组()解码为字节数组()的最佳解决方案是什么? 我正在考虑对字符串数组进行两次迭代,第一个迭代以获得字节数组所需的实际大小,然后第二个迭代写入每个元素的长度和实际字符串()。 解决方案必须能够以其他方式进行转换;从一个到一个。 问题答案: 让我们忽略一个事实,那就是走一秒钟。您需要做的第一件事是将序列化格式编组为