如何在r [duplicate]中使用for循环从数据框中分割文本和数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在r [duplicate]中使用for循环从数据框中分割文本和数字相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我有一个包含文本和数字的数据框,我想在单独的列中拆分,排序和组合文本和数字。请找到示例数据集。

Text
7 LIFTING & SHORING
-00 General
-10 Jacking
-20 Shoring
8 LEVELING & WEIGHING
-00 General
-10 Weighing and Balancing
-20 Leveling

我需要得到以下结果:

dig      Desc.
700      LIFTING & SHORING General
710      LIFTING & SHORING Jacking
720      LIFTING & SHORING Shoring
800      LEVELING & WEIGHING General
810      LEVELING & WEIGHING Weighing and Balancing 
820      LEVELING & WEIGHING Leveling

我尝试在R中使用for循环,但我是r中的新手并且找不到任何解决方案。

我感谢您的帮助。

答案

使用tidyverse

library(tidyverse)

df %>%
  separate(Text,c("text1","text2"),"^-") %>%
  mutate(text1 = ifelse(text1 == "", NA, text1)) %>%
  fill(text1) %>%
  filter(!is.na(text2)) %>%
  separate(text1,c("dig1","Desc1"),convert = TRUE,extra="merge") %>%
  separate(text2,c("dig2","Desc2"),convert = TRUE,extra="merge") %>%
  transmute(dig = dig1*100+dig2,
            Desc. = paste(Desc1,Desc2))

#   dig                                      Desc.
# 1 700                  LIFTING & SHORING General
# 2 710                  LIFTING & SHORING Jacking
# 3 720                  LIFTING & SHORING Shoring
# 4 800                LEVELING & WEIGHING General
# 5 810 LEVELING & WEIGHING Weighing and Balancing
# 6 820               LEVELING & WEIGHING Leveling

数据

df <- read.table(text="Text
'7 LIFTING & SHORING'
'-00 General'
'-10 Jacking'
'-20 Shoring'
'8 LEVELING & WEIGHING'
'-00 General'
'-10 Weighing and Balancing'
'-20 Leveling'",strin=F,h=T)

以上是关于如何在r [duplicate]中使用for循环从数据框中分割文本和数字的主要内容,如果未能解决你的问题,请参考以下文章

如何从 for 循环构建和填充熊猫数据框? [复制]

在R中使用for循环的逻辑回归[重复]

在for循环中分配代表的问题[重复]

如何在 R 中使用“for”循环进行非连续观察

如何在从列表更新路径的for循环中读取多个json? [复制]

R:使用 for 循环将因子的级别部分匹配到字符串? [复制]