在R中同时修改多列
Modify multiple columns at same time in R
我不知道怎么说清楚,这也许就是我没有找到答案的原因,但我想同时编辑两个不同列的值,而它们是标识列。
例如这是数据:
> data = data.frame(name1 = c("John","Jake","John","Paul"),
name2 = c("Paul", "Paul","John","John"),
value1 = c(0,0,1,0),
value2 = c(1,0,1,0))
> data
name1 name2 value1 value2
1 John Paul 0 1
2 Jake Paul 0 0
3 John John 1 1
4 Paul John 0 0
我想编辑第一行的值,使第一行变成 Jake & John 而不是 John & Paul,所以我想结合这两行代码同时进行:
data$name1[(data$name1 == "John" & data$name2 == "Paul")] <- "Jake"
data$name2[(data$name1 == "John" & data$name2 == "Paul")] <- "John"
应该是一个简单的技巧,但我没有!
另外,我应该在更大的数据集上这样做,每次修改都可以出现在多行上,而且我不知道修改将出现在哪些行上
这个怎么样?
data[data$col1 == "A" & data$col2 == "B", ] <- list("B", "D")
data
# col1 col2
#1 B D
#2 A C
#3 B A
#4 B B
library(tidyverse)
data %>%
mutate(
name1=
case_when(
name1=="John" & name2=="Paul" ~ "Jake",
TRUE ~ name1
),
name2=
case_when(
name1=="John" & name2=="Paul" ~ "John",
TRUE ~ name2))
我不知道怎么说清楚,这也许就是我没有找到答案的原因,但我想同时编辑两个不同列的值,而它们是标识列。
例如这是数据:
> data = data.frame(name1 = c("John","Jake","John","Paul"),
name2 = c("Paul", "Paul","John","John"),
value1 = c(0,0,1,0),
value2 = c(1,0,1,0))
> data
name1 name2 value1 value2
1 John Paul 0 1
2 Jake Paul 0 0
3 John John 1 1
4 Paul John 0 0
我想编辑第一行的值,使第一行变成 Jake & John 而不是 John & Paul,所以我想结合这两行代码同时进行:
data$name1[(data$name1 == "John" & data$name2 == "Paul")] <- "Jake"
data$name2[(data$name1 == "John" & data$name2 == "Paul")] <- "John"
应该是一个简单的技巧,但我没有! 另外,我应该在更大的数据集上这样做,每次修改都可以出现在多行上,而且我不知道修改将出现在哪些行上
这个怎么样?
data[data$col1 == "A" & data$col2 == "B", ] <- list("B", "D")
data
# col1 col2
#1 B D
#2 A C
#3 B A
#4 B B
library(tidyverse)
data %>%
mutate(
name1=
case_when(
name1=="John" & name2=="Paul" ~ "Jake",
TRUE ~ name1
),
name2=
case_when(
name1=="John" & name2=="Paul" ~ "John",
TRUE ~ name2))