x = c("stage 1-1", "stage 2-2", "stage 3-2")
y = c("stage 1-1", "stage 1-2", "stage 2-2")
z = c("stage 3-2", "stage 2-1", "stage 3-4")
df <- data.frame(x, y, z)
我是R的新手,我有一个名为df的数据帧。
但是,我想使用if else将阶段o-x更改为阶段o。
例如,阶段2-2到阶段2或阶段3-4到阶段3。
你能告诉我怎么做吗?
发布于 2021-08-27 05:09:14
我们可以用trimws
来删除子字符串
df[] <- lapply(df, trimws, whitespace = '-\\d+')
发布于 2021-08-27 07:55:03
您可以使用sub
删除'-'
之后的所有内容。
sub('-.*', '', df$x)
#[1] "stage 1" "stage 2" "stage 3"
要将其应用于所有列,您可以使用lapply
。
df[] <- lapply(df, function(x) sub('-.*', '', x))
df
# x y z
#1 stage 1 stage 1 stage 3
#2 stage 2 stage 1 stage 2
#3 stage 3 stage 2 stage 3
在dplyr
中使用across
也可以做到这一点-
library(dplyr)
df <- df %>% mutate(across(.fns = ~sub('-.*', '', .)))
https://stackoverflow.com/questions/68948247
复制相似问题