对dataframe中的列执行一系列突变

对dataframe中的列执行一系列突变,r,dataframe,mutate,R,Dataframe,Mutate,我试图替换数据框中的一些文本(下面给出了几行) 我尝试将数据帧变异为: Henry.longer <- Henry.longer %>% mutate(Loading = str_replace(meow, "Henry.Exterior.single", "Single")) %>% mutate(Loading = str_replace(meow, "Henry.Exterior.multi", &qu

我试图替换数据框中的一些文本(下面给出了几行)

我尝试将数据帧变异为:

Henry.longer <- Henry.longer %>% 
  mutate(Loading = str_replace(meow, "Henry.Exterior.single", "Single")) %>%
  mutate(Loading = str_replace(meow, "Henry.Exterior.multi", "Multi")) %>%
  mutate(Loading = str_replace(meow, "Henry.Interior.single", "Single")) %>%
  mutate(Loading = str_replace(meow, "Henry.Interior.multi", "Multi")) %>%
  mutate(Girder = str_replace(meow, "Henry.Exterior.multi", "Exterior")) %>%
  mutate(Girder = str_replace(meow, "Henry.Exterior.single", "Exterior")) %>%
  mutate(Girder = str_replace(meow, "Henry.Interior.multi", "Interior")) %>%
  mutate(Girder = str_replace(meow, "Henry.Interior.single", "Interior")) %>%
  select(-meow)

与使用
str\u replace
相比,我想使用正则表达式提取所需内容会更容易

library(dplyr)

Henry.longer %>%
  mutate(Loading = sub('.*\\.', '', meow), 
         Girder = sub('.*\\.(\\w+)\\..*', '\\1', meow))
在哪里

加载
-删除所有内容直到最后一点


begin
-提取两点之间的单词。

使用
str\u replace
我想使用正则表达式提取所需内容会更容易

library(dplyr)

Henry.longer %>%
  mutate(Loading = sub('.*\\.', '', meow), 
         Girder = sub('.*\\.(\\w+)\\..*', '\\1', meow))
在哪里

加载
-删除所有内容直到最后一点


主梁
-在两点之间提取一个单词。

如果使用静态字符串查找更容易或更安全,我认为我们可以使用查找向量:


tr_vec如果使用静态字符串查找更容易或更安全,我认为我们可以使用查找向量:


tru-vec哦,天哪,看起来你已经在这里找到了一些答案,但这里有一个超级简单的答案,它使用了
stringr::stru-extract

Henry.longer%
突变(加载=str|u提取(喵喵,“单|多”))%>%
变异(梁=str|u提取(喵喵,“内部|外部”))
值得注意的是,演示数据在一列中有一个奇怪的
meow
条目,因此它在我的机器上运行得并不完美:


哦,天哪,看起来你已经在这里找到了一些答案,但这里有一个超级简单的答案,它使用了
stringr::stru extract

Henry.longer%
突变(加载=str|u提取(喵喵,“单|多”))%>%
变异(梁=str|u提取(喵喵,“内部|外部”))
值得注意的是,演示数据在一列中有一个奇怪的
meow
条目,因此它在我的机器上运行得并不完美:


喵喵的确切定义在哪里?(也许您打算从
dput(Henry.longer[1:4,])
?)中给出输出。看起来您发布了所有行,但只有少数列(即1:4)。也许
dput(head(Henry.longer))
会起作用吗?是的,很抱歉刚刚解决了这个问题哈@r2evansyea抱歉刚刚修复了hah@dubukay在哪里定义了
meow
?(也许您打算从
dput(Henry.longer[1:4,])
?)中给出输出。看起来您发布了所有行,但只有少数列(即1:4)。也许
dput(head(Henry.longer))
会起作用吗?是的,很抱歉刚刚解决了这个问题哈@r2evansyea抱歉刚刚修复了hah@DubukaySo我希望
主梁
列显示
外部
内部
值,而
加载
显示
单个
多个
右侧,错过了…所以我想让
列显示
外部
内部
值,
加载
显示
单个
多个
对,错过了…谢谢,我想我还是很难理解regex,但我明白你在这里做了什么!!谢谢,我想我还是很难理解regex来制作这个,但我明白你在这里做了什么!!
library(dplyr)

Henry.longer %>%
  mutate(Loading = sub('.*\\.', '', meow), 
         Girder = sub('.*\\.(\\w+)\\..*', '\\1', meow))