Mutate()
是 R 语言中 dplyr
包提供的一个函数,用于在数据框(data frame)中创建或修改新的列(变量)。
mutate()
函数会返回一个新的数据框,其中包含创建或修改后的列,原始数据框不会被修改。
如果需要在原始数据框上进行就地修改,可以使用赋值操作符。
mutate(.data, new_column1 = expression1, new_column2 = expression2,...)
.data
表示要进行操作的数据框;
new_column
是要创建或修改的新列的名称,创建新列后会自动添加到df最后一列;
expression
是用于计算新列值的表达式;
...
表示其他要创建或修改的列。
library(dplyr)
# 示例数据框
df <- data.frame(Name = c("Alice", "Bob", "Charlie"),
Age = c(25, 30, 20),
Salary = c(50000, 60000, 45000))
# 创建新列 Bonus,计算 Salary 的 10% 作为 Bonus 值
df <- mutate(df, Bonus = Salary * 0.1)
# 修改 Age 列,将年龄加上 1
df <- mutate(df, Age = Age + 1)
# 打印修改后的数据框
print(df)
在上述示例中,我们有一个数据框 df
,包含三个列(Name、Age 和 Salary)。通过调用 mutate()
函数并传递数据框 df
、要创建的新列名称 Bonus
和计算表达式 Salary * 0.1
作为参数,我们创建了一个名为 Bonus 的新列,其值为 Salary 的 10%。接着,我们再次调用 mutate()
函数,并将数据框 df
、要修改的列名 Age
和计算表达式 Age + 1
作为参数,将 Age 列中的每个值加上 1。最后,我们通过打印语句输出修改后的数据框。
输出结果如下所示:
Name Age Salary Bonus
1 Alice 26 50000 5000
2 Bob 31 60000 6000
3 Charlie 21 45000 4500
在输出结果中,我们可以看到数据框 df
中新增了一个名为 Bonus 的列,它的值是根据 Salary 列计算得出的。同时,Age 列的值也被修改为原值加上 1。
关于其中的function函数¶
这个就可以。也是将x当作向量处理!
get_one <- function(x) {
j <- ifelse(x == '近地铁', 1, 0)
return(j)
}
# 将有地铁的数据变为0
lj1 <- lj_group %>%
mutate(if_subway = get_one(near_subway))
但下面两种都不行,不能循环迭代,说是length(x)长度与lj_group的长度不符合???
get_one <- function(x){
j <- c(0)
for (i in 1:length(x)){
if (x[i] == '近地铁'){
j[i] <- 1
}else{
j[i] <- 0
}
}
return(j)
}
get_one <- function(x){
j <- 0
if (x == '近地铁'){
j <- 1
}else{
j <- 0
}
return(j)
}