微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于 \ 拆分数据框字符串

如何解决基于 \ 拆分数据框字符串

我正在尝试将数据框中的字符串列拆分为基于 .我的数据看起来像这样:

     Rk Player  Season   Age Tm    Lg       WS     G    GS    MP    FG   FGA  `2P` `2PA`  `3P` `3PA`    FT   FTA   ORB   DRB   TRB   AST   STL   BLK   TOV    PF
  <dbl> <chr>   <chr>  <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1     1 "Lebro~ 2010-~    26 MIA   NBA    15.6    79    79  3063   758  1485   666  1206    92   279   503   663    80   510   590   554   124    50   284   163
2     2 "Pau G~ 2010-~    30 LAL   NBA    14.7    82    82  3037   593  1120   592  1117     1     3   354   430   268   568   836   273    48   130   142   203

我尝试操作的列是“玩家”列。该列的条目看起来像这样。

"Lebron James\\jamesle01"        "Pau Gasol\\gasolpa01"           "Dwight Howard\\howardw01"

我想把它分成两列 pName 和 pID

pName            pID

Lebron James    jamesle01
Pau Gasol       gasolpa01
Dwight Howard   howardw01

我曾尝试使用 gsubsubstr_replaceseparate,但一直无法弄清楚

player_stats2010 %>%
+   str_replace(Player,"\\\.*","")
player_stats2010 %>%
+   sub("\\\","",player_stats2010$Player)
player_stats2010 %>%
+   sub("\.*",player_stats2010$Player)
player_stats2010 %>%
+   gsub("\.*",player_stats2010$Player)
player_stats2010_test <- player_salaries_2010 %>%
+   separate(Player,c("pName","pID"),"\")

尽管看了网上和其他几个问题,但我真的不明白这个问题的语法。如果您能帮助我理解我不理解的内容,那就太棒了。非常感谢:)

解决方法

1) read.table 使用末尾注释中的 x 并且只有基数 R 使用 read.table,如下所示:

read.table(text = x,sep = "\\",col.names = c("pName","pID"))

给予:

          pName       pID
1  LeBron James jamesle01
2     Pau Gasol gasolpa01
3 Dwight Howard howardw01

2) 整理

使用 tidyr 我们可以做到这一点:

library(tidyr)
data.frame(x) %>%
  separate(x,c("pName","pID"),sep = r"{\\}")

注意

假设输入为:

x <- c("LeBron James\\jamesle01","Pau Gasol\\gasolpa01","Dwight Howard\\howardw01")
,

您可以使用 str_extract 包中的 stringr 以及不包含 \\ 的字符类:

library(stringr)
player_stats$pName <- str_extract(player_stats$Player,"^[\\w\\s]+")
player_stats$pID <- str_extract(player_stats$Player,"[\\w\\s]+$")

在这两种情况下,您都定义了一个仅允许出现字母 (\\w) 和空白字符 (\\s) 的字符类,这两个变量之间的区别在于 pName 查找的是模式从字符串开头 (^) 开始,而 pID 从字符串末尾 ($) 开始查找。

结果:

player_stats
                    Player         pName       pID
1  LeBron James\\jamesle01  LeBron James jamesle01
2     Pau Gasol\\gasolpa01     Pau Gasol gasolpa01
3 Dwight Howard\\howardw01 Dwight Howard howardw01

数据:

player_stats <- data.frame(
  Player = c("LeBron James\\jamesle01","Dwight Howard\\howardw01"))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?