R Mutate仅适用于第一列的值
我试图从列的值中删除子字符串,我的数据如下所示:R Mutate仅适用于第一列的值,r,mutate,R,Mutate,我试图从列的值中删除子字符串,我的数据如下所示: LBL Var1 Var2 name1 1 12 name1_A 1 13 name1_B 2 10 name2 1 11 name2_A 2 10 name2_B 3 9 我已经创建了一个在单个字符串上工作的函数,但是当我尝试改变数据帧时,它会显示第一行的结果,而不会应用于其余的行。
LBL Var1 Var2
name1 1 12
name1_A 1 13
name1_B 2 10
name2 1 11
name2_A 2 10
name2_B 3 9
我已经创建了一个在单个字符串上工作的函数,但是当我尝试改变数据帧时,它会显示第一行的结果,而不会应用于其余的行。我做错了什么
这是我迄今为止创建的函数:
remExt <- function(x){
y <- str_split_fixed(x,"_",2)
return(y[1])
}
我得到以下结果:
LBL Var1 Var2 newLBL
name1 1 12 name1
name1_A 1 13 name1
name1_B 2 10 name1
name2 1 11 name1
name2_A 2 10 name1
name2_B 3 9 name1
我的预期结果是:
LBL Var1 Var2 newLBL
name1 1 12 name1
name1_A 1 13 name1
name1_B 2 10 name1
name2 1 11 name2
name2_A 2 10 name2
name2_B 3 9 name2
但是似乎无法让它工作,有什么想法吗?您只从
y
中获取第一个元素,您希望第一列包含y[,1]
:
remExt <- function(x){
y <- str_split_fixed(x,"_",2)
return(y[,1])
}
df %>% mutate(newLBL = remExt(LBL))
LBL Var1 Var2 newLBL
1 name1 1 12 name1
2 name1_A 1 13 name1
3 name1_B 2 10 name1
4 name2 1 11 name2
5 name2_A 2 10 name2
6 name2_B 3 9 name2
您只从
y
中获取第一个元素,您希望第一列包含y[,1]
:
remExt <- function(x){
y <- str_split_fixed(x,"_",2)
return(y[,1])
}
df %>% mutate(newLBL = remExt(LBL))
LBL Var1 Var2 newLBL
1 name1 1 12 name1
2 name1_A 1 13 name1
3 name1_B 2 10 name1
4 name2 1 11 name2
5 name2_A 2 10 name2
6 name2_B 3 9 name2
remExt <- function(x){
y <- str_split_fixed(x,"_",2)
return(y[,1])
}
df %>% mutate(newLBL = remExt(LBL))
LBL Var1 Var2 newLBL
1 name1 1 12 name1
2 name1_A 1 13 name1
3 name1_B 2 10 name1
4 name2 1 11 name2
5 name2_A 2 10 name2
6 name2_B 3 9 name2
df %>% mutate(newLBL = str_replace(LBL,"\\_.",""))
df %>% mutate(newLBL = str_remove(LBL,"\\_."))