如何在R中按索引修改列中重复的subject_name值?
问题解答:修改数据框指定行的列值
你的尝试失败的原因
- 索引范围错误:你选的
dt[1:2,c(2)]是前两行(对应subject_ID 101的记录),但需求是修改subject_ID 103的行(第5、6行) - 修改目标值错误:你把"M"替换成了"M1",但需求是改成"M2"
- 未修改原数据框:你把结果存在了新变量
dt.try1里,根本没改动原数据框dt
通过索引实现需求的正确方法
方法1:按subject_ID匹配定位(推荐,不受行位置变动影响)
由于cbind生成的数据框中a列是字符类型,直接匹配字符"103"即可:
# 定位a列等于"103"的行,修改对应b列的值为"M2" dt[dt$a == "103", "b"] <- "M2" # 查看修改后的结果 dt
运行后会得到期望的结果:
a b 1 101 M 2 101 M 3 102 P 4 102 P 5 103 M2 6 103 M2
方法2:按固定行号索引(适合已知目标行位置的情况)
如果你明确知道subject_ID 103在第5、6行,可以直接指定行号:
dt[5:6, "b"] <- "M2"
内容的提问来源于stack exchange,提问作者Rabin KC
相关产品推荐
相关产品推荐

