У меня есть фрейм данных ниже, и я хочу оставить все без изменений, кроме последней ячейки. Я хочу, чтобы он был округлен до ближайшего верхнего целого числа. Есть ли способ нацелиться на одну или несколько конкретных клеток с помощью dplyr?
df <- data.frame(id = c(rep(101, 4), rep(202, 2), "tot"),
status = c("a","b","c","d", "a", "b", "cccc"),
wt = c(100,200,100,105, 20,22,10000),
ht = c(5.3,5.2,5,5.1, 4.3,4.2,4.9))
> df
id status wt ht
1 101 a 100 5.3
2 101 b 200 5.2
3 101 c 100 5.0
4 101 d 105 5.1
5 202 a 20 4.3
6 202 b 22 4.2
7 tot cccc 10000 4.9
мой желаемый результат:
df[df$id=="tot", 4] <- round(df[df$id=="tot", 4])
> df
id status wt ht
1 101 a 100 5.3
2 101 b 200 5.2
3 101 c 100 5.0
4 101 d 105 5.1
5 202 a 20 4.3
6 202 b 22 4.2
7 tot cccc 10000 5.0
Возможное решение, основанное на dplyr
:
library(dplyr)
df %>%
mutate(ht = if_else(row_number() == n(), round(ht,0), ht))
#> id status wt ht
#> 1 101 a 100 5.3
#> 2 101 b 200 5.2
#> 3 101 c 100 5.0
#> 4 101 d 105 5.1
#> 5 202 a 20 4.3
#> 6 202 b 22 4.2
#> 7 tot cccc 10000 5.0
Да, @Брайан! Спасибо за комментарий моего решения!
или
... if_else(id == 'tot', ...
, чтобы соответствовать условию, используемому в вопросе