【发布时间】:2016-02-10 20:49:12
【问题描述】:
我正在尝试在 R 中完成一项有点复杂的任务。
我有一个data frame(为简单起见)三列。
第 1 列是一个字符串。
第 2 列是一个整数。
第 3 列是一个整数。
我想获取第 1 列中包含某个子字符串并且第 2 列具有精确值的所有观察值,并将第三列替换为数字 1。
也就是说,我有以下dataframe:
x <- data.frame(x1 = c("bob","jane","bob","bobby","bob","jane","bobby","bob","jane","bob"),
x2 = c(1,1,1,1,1,2,2,2,2,2),
x3 = c(13,22,3,34,10,23,53,42,13,35))
而且,我想选择第 1 列包含 bob 且第 2 列==1 的观察值,并将第三列更改为 1,这样我最终得到:
y1 <- c("bob","jane","bob","bobby","bob","jane","bobby","bob","jane","bob")
y2 <- c(1,1,1,1,1,2,2,2,2,2)
y3 <- c(1,22,1,1,1,23,53,42,13,35)
y <- data.frame(y1,y2,y3)
我想在一个非常非常大的数据集上执行此操作。拆分数据集并将其重新组合在一起是不可行的。
我尝试过使用grep,但是当我尝试同时进行两场比赛时它不起作用。另外,我尝试过子集,但是我必须将dataframe 分开并将其重新组合在一起。
提前非常感谢。
【问题讨论】:
-
grepl通常更有用,因为它支持逻辑测试与矢量化&和|的组合。