R 中是否有一个函数可以让我连续打印唯一的其他唯一元素?
Is there a function in R where I can print the only other unique element in a row?
我有一个非常令人困惑的问题,我想寻求帮助。
我有以下数据table:
type
value
cat
1
dog
0
cat
1
cat
1
cat
1
dog
0
列类型中只有两个唯一值。我想改变一个新列,我在其中搜索值 0,然后打印 cat,这是 type 列中唯一的其他唯一值,而不是 dog。因此,
type
value
mutated
cat
1
_
dog
0
cat
cat
1
_
cat
1
_
cat
1
_
dog
0
cat
我不知道从哪里开始。我试过 ifelse
语句,但它们无法打印该行中值的相反值。有帮助吗?
这是我试过的功能
data %>% mutate(mutated = ifelse(value == 0, !(type), type))
然而,这只是给我一个错误。
您可以使用以下代码:
library(tidyverse)
df %>%
mutate(mutated = ifelse(value == 0, "cat", "-"))
输出:
# A tibble: 6 × 3
type value mutated
<chr> <dbl> <chr>
1 cat 1 -
2 dog 0 cat
3 cat 1 -
4 cat 1 -
5 cat 1 -
6 dog 0 cat
您的数据
dput(df)
structure(list(type = c("cat", "dog", "cat", "cat", "cat", "dog"
), value = c(1, 0, 1, 1, 1, 0)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -6L))
您可以使用 setdiff
,这将计算所有 type
的向量(长度为 2,只有“cat”和“dog”)与 type
对于给定的行。根据您的需要,还有其他方法可以解决此问题。
library(tidyverse)
df %>%
rowwise() %>%
mutate(mutated = ifelse(value == 0, setdiff(unique(df$type), type), "-"))
输出
type value mutated
<chr> <dbl> <chr>
1 cat 1 -
2 dog 0 cat
3 cat 1 -
4 cat 1 -
5 cat 1 -
6 dog 0 cat
我有一个非常令人困惑的问题,我想寻求帮助。
我有以下数据table:
type | value |
---|---|
cat | 1 |
dog | 0 |
cat | 1 |
cat | 1 |
cat | 1 |
dog | 0 |
列类型中只有两个唯一值。我想改变一个新列,我在其中搜索值 0,然后打印 cat,这是 type 列中唯一的其他唯一值,而不是 dog。因此,
type | value | mutated |
---|---|---|
cat | 1 | _ |
dog | 0 | cat |
cat | 1 | _ |
cat | 1 | _ |
cat | 1 | _ |
dog | 0 | cat |
我不知道从哪里开始。我试过 ifelse
语句,但它们无法打印该行中值的相反值。有帮助吗?
这是我试过的功能
data %>% mutate(mutated = ifelse(value == 0, !(type), type))
然而,这只是给我一个错误。
您可以使用以下代码:
library(tidyverse)
df %>%
mutate(mutated = ifelse(value == 0, "cat", "-"))
输出:
# A tibble: 6 × 3
type value mutated
<chr> <dbl> <chr>
1 cat 1 -
2 dog 0 cat
3 cat 1 -
4 cat 1 -
5 cat 1 -
6 dog 0 cat
您的数据
dput(df)
structure(list(type = c("cat", "dog", "cat", "cat", "cat", "dog"
), value = c(1, 0, 1, 1, 1, 0)), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -6L))
您可以使用 setdiff
,这将计算所有 type
的向量(长度为 2,只有“cat”和“dog”)与 type
对于给定的行。根据您的需要,还有其他方法可以解决此问题。
library(tidyverse)
df %>%
rowwise() %>%
mutate(mutated = ifelse(value == 0, setdiff(unique(df$type), type), "-"))
输出
type value mutated
<chr> <dbl> <chr>
1 cat 1 -
2 dog 0 cat
3 cat 1 -
4 cat 1 -
5 cat 1 -
6 dog 0 cat