【发布时间】:2021-11-25 16:37:30
【问题描述】:
我正在尝试更新一个包含 153 行和 291 列的数据框,其中第一列是产品描述,所有其他列都是数字。
大多数行的总和为 1,但由于一些错误的数据输入,一些行的值翻了一番。
我想根据行和是否大于 1 来更新列。这样行和变为 1。
一个小例子数据:
test <- data.frame(product = c("First", "Second", "Third"),
a = c(0.2, 0.1, 0.2),
b = c(0.4, 0.1, 0.2),
c = c(0.4, 0.8, 1.6)
)
product a b c
1 First 0.2 0.4 0.4
2 Second 0.1 0.1 0.8
3 Third 0.2 0.2 1.6
我试过了
test %>% mutate(across(2:ncol(test), if_else(rowSums(.) > 1, . / 2, .)))
但得到以下错误:
错误:mutate() 输入 ..1 有问题。
我..1 = across(2:ncol(test), if_else(rowSums(.) > 1, ./2, .))。
x 'x' 必须是数字。
【问题讨论】: