乘以 `separate_rows` 创建的每个新行
Multiply every new rows created by `separate_rows`
我正在使用 tidyr
中的 separate_rows
函数。
基本上,我想更改复制的数据的值——在下面的示例中,它会显示为:“每次创建新行时,将 z 乘以 0.5”
我已经在默认 df 中添加了一个索引。所以它可能是“每次索引 N 与 [-1] 相同时,将 z 乘以 0.5”
df <- tibble(
x = 1:4,
y = c("a", "b,c,d", "e,f"),
z = 1:4
)
# A tibble: 3 x 3
x y z
<int> <chr> <int>
1 1 a 1
2 2 b,c,d 2
3 3 e,f 3
我们得到的:
> separate_rows(df, y)
# A tibble: 6 x 3
x y z
<int> <chr> <int>
1 1 a 1
2 2 b 2
3 2 c 2
4 2 d 2
5 3 e 3
6 3 f 3
我需要什么(新行乘以 0.5 的 z 值:
# A tibble: 6 x 3
x y z
<int> <chr> <int>
1 1 a 1
2 2 b 1
3 2 c 1
4 2 d 1
5 3 e 1.5
6 3 f 1.5
如果 n > 1,您可以按 z 分组并相乘。
df %>%
separate_rows(y) %>%
group_by(z) %>%
mutate(z = ifelse(n() > 1, z*0.5, z))
x y z
<int> <chr> <dbl>
1 1 a 1
2 2 b 1
3 2 c 1
4 2 d 1
5 3 e 1.5
6 3 f 1.5
一个选项也是将 'z' 乘以 0.5,得到 pmax
与 1 然后使用 separate_rows
library(dplyr)
library(tidyr)
df %>%
mutate(z = pmax(1, z * 0.5)) %>%
separate_rows(y)
-输出
# A tibble: 6 × 3
x y z
<int> <chr> <dbl>
1 1 a 1
2 2 b 1
3 2 c 1
4 2 d 1
5 3 e 1.5
6 3 f 1.5
我正在使用 tidyr
中的 separate_rows
函数。
基本上,我想更改复制的数据的值——在下面的示例中,它会显示为:“每次创建新行时,将 z 乘以 0.5”
我已经在默认 df 中添加了一个索引。所以它可能是“每次索引 N 与 [-1] 相同时,将 z 乘以 0.5”
df <- tibble(
x = 1:4,
y = c("a", "b,c,d", "e,f"),
z = 1:4
)
# A tibble: 3 x 3
x y z
<int> <chr> <int>
1 1 a 1
2 2 b,c,d 2
3 3 e,f 3
我们得到的:
> separate_rows(df, y)
# A tibble: 6 x 3
x y z
<int> <chr> <int>
1 1 a 1
2 2 b 2
3 2 c 2
4 2 d 2
5 3 e 3
6 3 f 3
我需要什么(新行乘以 0.5 的 z 值:
# A tibble: 6 x 3
x y z
<int> <chr> <int>
1 1 a 1
2 2 b 1
3 2 c 1
4 2 d 1
5 3 e 1.5
6 3 f 1.5
如果 n > 1,您可以按 z 分组并相乘。
df %>%
separate_rows(y) %>%
group_by(z) %>%
mutate(z = ifelse(n() > 1, z*0.5, z))
x y z
<int> <chr> <dbl>
1 1 a 1
2 2 b 1
3 2 c 1
4 2 d 1
5 3 e 1.5
6 3 f 1.5
一个选项也是将 'z' 乘以 0.5,得到 pmax
与 1 然后使用 separate_rows
library(dplyr)
library(tidyr)
df %>%
mutate(z = pmax(1, z * 0.5)) %>%
separate_rows(y)
-输出
# A tibble: 6 × 3
x y z
<int> <chr> <dbl>
1 1 a 1
2 2 b 1
3 2 c 1
4 2 d 1
5 3 e 1.5
6 3 f 1.5