R语言 将前4个单词保留在一列中

cidc1ykv  于 2023-05-04  发布在  其他
关注(0)|答案(1)|浏览(150)

我试图只保留数据中一列的前4个单词,并且仍然希望保留少于4个单词的其他观察结果。
这是一些数据的示例。
| 国家|公司|工人人数|
| --------------|--------------|--------------|
| X|费尔菲尔德护理康复中心,|九九|
| Y轴|Athena健康|二十四|
| Z|DRS测试和能源管理,|一千零九|
| W|美式服装|三百七十六|
| C|BERRY PLASTICSPANY -ALENCE特种胶|六十七|
| A|Tuscaloosa资源,Swann的交叉矿|四五六|
我使用了以下代码

library(stringr)

df$Company1 <- word(df$Company, 1, 4)

虽然这是提供列的4个字的公司名称,这是不工作的我,因为它是摆脱的公司,有不到4个字返回NA的那些代替。
所以我希望找到一个解决方案,以保持每一个意见,有1至4个字。

2uluyalo

2uluyalo1#

你可以在下面这样做。
1.在stringr中使用str_split()拆分Company
1.用apply()粘贴每行
1.删除右边的空白。

library(stringr)

df <- data.frame(
  State = c("X","Y","Z","W","C","A"),
  Company = c("FAIRFIELD NURSING AND REHABILITATION CENTER",    
  "ATHENAHEALTH",   
  "DRS TEST & ENERGY MANAGEMENT",   
  "AMERICAN APPAREL",   
  "BERRY PLASTICSPANY -ALENCE SPECIALTY ADHES",
  "TUSCALOOSA RESOURCES , SWANN'S CROSSING MINE"),
  number_of_workers = c(99,24,1009,376,67, 456))

df$Company1 <- str_split(df$Company," ", simplify = T)[,1:4] |> 
  apply(1, paste, collapse=" ") |> 
  trimws(which = "right")

输出

[1] "FAIRFIELD NURSING AND REHABILITATION"
[2] "ATHENAHEALTH"                        
[3] "DRS TEST & ENERGY"                   
[4] "AMERICAN APPAREL"                    
[5] "BERRY PLASTICSPANY -ALENCE SPECIALTY"
[6] "TUSCALOOSA RESOURCES , SWANN'S"

创建于2023-04-28带有reprex v2.0.2

相关问题