我有一个包含原始列和目标列的大型数据集(下面的示例)。我需要在Dest2中选择值为“W”(Works from Home)的所有行,并使用Origin值更新它。因此,Dest2中第4行的值将变为BB。
我尝试了一些使用过滤和子集的选项,可以更新所需的行,但所有其他行的值都是NA。
有没有办法只更新Dest2 = W的行?
> TestData #loads it in
JobID Origin Dest Dest2
1 1 AA BB BB
2 2 AA BB BB
3 3 BB AA AA
4 4 BB W W
5 5 CC BB BB
6 6 CC BB BB
7 7 CC BB BB
8 8 CC CC CC
9 9 CC CC CC
10 10 DD AA AA
答案 0 :(得分:0)
我知道使用data.table
的解决方案:
setDT(TestData)
TestData[Dest2 == "W", Dest2 := Origin]
TestData
#JobID Origin Dest Dest2
#1: 1 AA BB BB
#2: 2 AA BB BB
#3: 3 BB AA AA
#4: 4 BB W BB
#5: 5 CC BB BB
#6: 6 CC BB BB
#7: 7 CC BB BB
#8: 8 CC CC CC
#9: 9 CC CC CC
#10: 10 DD AA AA
答案 1 :(得分:0)
TestData$Dest2 <- ifelse(TestData$Dest2 == "W", TestData$Origin, TestData$Dest2)
答案 2 :(得分:0)
Here is a solution using dplyr
.
library(dplyr)
TestData2 <- TestData %>%
mutate(Dest2 = ifelse(Dest2 %in% "W", Origin, Dest2))
Notice the use of %in%
. If you want to match multiple strings, not just W
, %in%
could be a better choice.
TestData <- read.table(text = "JobID Origin Dest Dest2
1 AA BB BB
2 AA BB BB
3 BB AA AA
4 BB W W
5 CC BB BB
6 CC BB BB
7 CC BB BB
8 CC CC CC
9 CC CC CC
10 DD AA AA",
header = TRUE, stringsAsFactors = FALSE)