如何解决通过将数值添加到每个观察值来突变数据框中的不同列
我具有以下格式的数据框,(i)要选择包含字符串“ EH”的所有列,(ii)将值207添加到所选列中的每个观察值,(iii)覆盖列通过其新值。
NO date_sub EH17.5a_sub EH17.5b_sub EH12.5a_sub EH12.5b_sub pH17.5_sub pH12.5_sub EH7.5a_sub EH7.5b_sub EH2.5a_sub EH2.5b_sub pH7.5_sub pH2.5_sub Temperature_sub RH_sub Voltage_sub
1 1 2020-06-24 19:00:00 118.67 289.40 198.79 341.28 6.76414 6.80436 358.17 342.98 369.71 171.23 6.79763 6.43233 23.98 39.22 12.353
2 2 2020-06-24 20:00:00 93.04 295.11 162.99 343.38 6.82978 6.87673 361.08 348.22 375.23 171.67 6.97362 6.51686 23.75 39.22 12.357
3 3 2020-06-24 21:00:00 76.67 298.83 142.24 344.17 6.96726 7.03494 362.60 352.05 379.18 172.32 7.20395 6.71439 23.78 39.25 12.353
4 4 2020-06-24 22:00:00 64.27 301.20 128.76 344.32 7.09183 7.17027 363.99 355.68 382.76 174.21 7.37294 6.88682 23.79 39.28 12.346
5 5 2020-06-24 23:00:00 54.24 302.77 117.72 344.28 7.19286 7.27350 364.77 358.63 385.63 176.38 7.49528 7.03470 23.78 39.34 12.346
6 6 2020-06-25 00:00:00 45.46 303.24 107.16 343.47 7.27001 7.34746 365.01 360.91 388.15 177.47 7.58073 7.15890 23.78 39.44 12.363
我尝试了以下方法,但是有没有更简单的方法,因为我的数据框包含数百列,因此必须在其中添加值207。
data_e <- data_e %>%
mutate(EH17.5a_sub = EH17.5a_sub+207) %>%
mutate(EH17.5b_sub = EH17.5b_sub+207) # and so on ...
解决方法
您可以使用across
中的dplyr
将函数应用于多个列。
library(dplyr)
data_e <- data_e %>% mutate(across(contains("EH"),~. + 207))
#Use `mutate_at` for `dplyr` < 1.0.0
#data_e <- data_e %>% mutate_at(vars(contains("EH")),~. + 207)
或者在基数R中:
cols <- grep('EH',names(data_e))
data_e[cols] <- data_e[cols] + 207
,
您可以使用tidyverse
函数。 starts_with
将找到您需要的模式。
library(tidyverse)
data %>%
mutate(new_variable = select(data,starts_with("EH")) + 207)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。