例如,如何在具有100行的数据集中将25至45的行除以2?
答案 0 :(得分:2)
BOD是一个内置的6x2数据框,其列均为数字。这些解决方案需要dplyr 1.0.0或更高版本。
1)(行),它检查行号是否在3到5之间(含3和5),如果是,则除以2,否则不行。如果某些列不是数字列,则将everything()
替换为where(is.numeric)
,以便该除法仅适用于数字列。
library(dplyr)
BOD %>% mutate(across(everything(), ~ if_else(row_number() %in% 3:5, ./2, .)))
2)此替代方法使用了magrittr的%<>%运算符,但是它确实会覆盖BOD,因为它将保留BOD的修改版本,而上面的保留它并返回结果。>
library(dplyr)
library(magrittr)
BOD[3:5, ] %<>% mutate(across(everything(), ~ ./2))
答案 1 :(得分:1)
您可以对范围内的行进行子集,划分和替换。
rows <- 25:45
df[rows, ] <- df[rows, ]/2
以可复制的示例将行号3划分为4。
set.seed(456)
df <- data.frame(a = sample(100, 5), b = sample(100, 5))
df
# a b
#1 35 78
#2 38 31
#3 85 73
#4 27 79
#5 25 90
rows <- 3:4
df[rows, ] <- df[rows, ]/2
df
# a b
#1 35.0 78.0
#2 38.0 31.0
#3 42.5 36.5
#4 13.5 39.5
#5 25.0 90.0