R data frame中基于同列其他行值替换指定行数值的方法咨询
Python(pandas 实现)
首先构造示例数据框:
import pandas as pd # 构造示例数据 df = pd.DataFrame({ 'Name': ['A', 'B', 'C'], 'c1': [1, 0, 1], 'c2': [2, 0, 1], 'c3': [3, 0, 1], 'c4': [4, 0, 1] })
你可以自定义需要应用的函数,比如示例的2倍计算:
# 自定义计算函数,可按需修改逻辑 def calc_func(x): return 2 * x
接下来指定目标列,匹配对应行完成赋值即可:
# 指定需要更新的列 target_cols = ["c2", "c3", "c4"] # 取A行目标列的值应用函数后,赋值给B行对应列 df.loc[df["Name"] == "B", target_cols] = df.loc[df["Name"] == "A", target_cols].apply(calc_func)
输出df即可得到你需要的结果。
R 实现
构造示例数据:
df <- data.frame( Name = c("A", "B", "C"), c1 = c(1, 0, 1), c2 = c(2, 0, 1), c3 = c(3, 0, 1), c4 = c(4, 0, 1) )
自定义函数+赋值:
# 自定义计算函数 calc_func <- function(x) { return(2 * x) } target_cols <- c("c2", "c3", "c4") # 赋值更新 df[df$Name == "B", target_cols] <- lapply(df[df$Name == "A", target_cols], calc_func)
注意事项
- 如果你的数据框行顺序是固定的,也可以直接用行索引替代Name匹配,比如pandas里用
df.loc[1, target_cols]对应B行,不过用业务字段匹配兼容性更强,不会因为行序变化导致赋值错误。 - 函数可以自定义任意计算逻辑,不限于倍数运算。
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

