【发布时间】:2022-12-13 09:37:44
【问题描述】:
我有以下两个数据框。
a <- c(3,2,6,7,5)
b <- c(2,5,7,8,1)
d <- c(3,6,2,1,6)
df <- data.frame(a, b, d)
a1 <- c("a", "H1")
b1 <- c("b", "H2")
d1 <- c("d", "H1")
df_2 <- data.frame(a1, b1, d1)
方便的是,df 中的列名以列为基础匹配 df_2 的第 1 行。我想使用 df_2 数据框来更改 df 中的列。对于这个例子,我只想将每一列乘以一个不同的因子。如果 df 中的列标题与 df_2 中的 H1 匹配,我想将该列乘以 2。如果 df 中的列标题与 df_2 中的 H2 匹配,我想将该列乘以 3。我可以一次做一列使用以下代码。
#How to change column 1
df[,1] <- if (df_2[2,1] == "H1") {
df[,1]*2
} else if (df_2[2,1] == "H2") {
df[,1]*3
}
#How to change column 2
df[,2] <- if (df_2[2,2] == "H1") {
df[,2]*2
} else if (df_2[2,2] == "H2") {
df[,2]*3
}
#How to change column 3
df[,3] <- if (df_2[2,3] == "H1") {
df[,3]*2
} else if (df_2[2,3] == "H2") {
df[,3]*3
}
我如何使用应用函数(首选)或 for 循环一次对所有列进行这些计算?我也愿意接受其他更优雅的解决方案。
【问题讨论】:
标签: r