是否可以对数据帧的单行用管道执行dplyr操作?例如,说我有一个以下数据框(称为df),并且想要对该数据框的列进行一些操作:
df <- df %>%
mutate(col1 = col1 + col2)
此代码将一列设置为等于该列与另一列的总和。如果我想这样做,但只能单行怎么办?
df[1,] <- df[1,] %>%
mutate(col1 = col1 + col2)
我意识到这在base R中是一个简单的操作,但是我很好奇,很想使用dplyr操作和管道来实现这一目标。这有可能还是违背dplyr语法?
这是一个例子。说我有一个数据框:
df = data.frame(a = rep(1, 100), b = rep(1,100))
我展示的第一个例子:
df <- df %>%
mutate(a = a + b)
所有列的a列将为2。
第二个示例只会导致a列的第一行为2。
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以mutate()
和case_when()
进行条件操纵。
df %>%
mutate(a = case_when(row_number(a) == 1 ~ a + b,
TRUE ~ a))
产生
# A tibble: 100 x 2
a b
<dbl> <dbl>
1 2 1
2 1 1
3 1 1
4 1 1
5 1 1
6 1 1
7 1 1
8 1 1
9 1 1
10 1 1
# … with 90 more rows
library(tidyverse)
df <- tibble(a = rep(1, 100), b = rep(1,100))