【问题标题】:How to update entire table using existing data in R? [duplicate]如何使用 R 中的现有数据更新整个表? [复制]
【发布时间】:2021-09-28 12:44:07
【问题描述】:
我在 R 中有一个已建立的表。
| mail ct |
1 |
2 |
3 |
| 1000 |
10 |
100 |
20 |
| 2000 |
200 |
100 |
30 |
我想根据以下计算创建一个列名和行号相同但值不同的新表
| mail ct |
1 |
2 |
3 |
| 1000 |
10/1000 |
100/1000 |
20/1000 |
| 2000 |
200/2000 |
100/2000 |
30/2000 |
输出应该是这样的......
| mail ct |
1 |
2 |
3 |
| 1000 |
0.01 |
0.1 |
0.02 |
| 2000 |
0.1 |
0.05 |
0.015 |
如何在 R 中做到这一点?
【问题讨论】:
标签:
r
datatable
data-manipulation
【解决方案1】:
你可以做-
df[-1] <- df[-1]/df$mail.ct
df
# mail.ct 1 2 3
#1 1000 0.01 0.10 0.020
#2 2000 0.10 0.05 0.015
【解决方案2】:
这是一种使用dplyr的方法:
library(dplyr)
df1 %>%
mutate(across(-mail.ct, ~.x/mail.ct))
# mail.ct 1 2 3
#1 1000 0.01 0.10 0.020
#2 2000 0.10 0.05 0.015
这意味着:取df1,更改除mail.ct 之外的所有列,让它们(“.x”)除以该行的mail.ct 值。
数据
df1 <- data.frame(
check.names = FALSE,
mail.ct = c(1000L, 2000L),
`1` = c(10L, 200L),
`2` = c(100L, 100L),
`3` = c(20L, 30L)
)