【问题标题】:Question about removing certain pieces of information in cells in R df? [closed]关于在 R df 的单元格中删除某些信息的问题? [关闭]
【发布时间】:2022-01-11 09:00:57
【问题描述】:

我在R 中有一个df,其中包含有关俄罗斯杜马政党投票行为的数据。见附图。

每列当前包含 百分比数量 的投票。因此,例如,在第一列的第一行UR_yes,我们看到 95.8% 和 228 гол。 (即英文228票)。在每一列中,我希望后一个数字不带 гол。因此,例如,每个单元格应该只包含一个数字。以第一列为例,这看起来像第一个单元格中的 228,第二个单元格中的 234,第三个中的 235,依此类推。我正在处理很多条目(在 15 个单独的 df 中约有 15,000 个条目),因此这意味着在 Excel 中手动编辑这些条目会很困难。有没有办法在R 中自动化这个过程?任何建议将不胜感激。

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。请不要将数据共享为图像,否则我们需要重新输入所有内容以测试任何可能的建议。
  • 您能否在问题文本中将dput(head(YOUR_TABLE)) 的输出作为代码分享?这将生成代码,创建前 6 行数据的完美副本,供人们测试潜在解决方案,而无需重新输入数据并猜测您的数据格式。

标签: r dataframe data-cleaning


【解决方案1】:

您可以使用 separate() 中的 tidyr

library(tibble)
library(tidyr)

dat <- tibble::tribble(
    ~ UR_yes,
    "95.8%, 228 гол.",
    "98.3%, 234 гол.",
    "98.7%, 235 гол."
)


dat %>% 
    tidyr::separate(UR_yes, into = c("perc_votes", "num_votes"), sep="[%, ]+")
# A tibble: 3 × 2
    perc_votes num_votes
    <chr>      <chr>    
  1 95.8       228      
  2 98.3       234      
  3 98.7       235 

【讨论】:

    【解决方案2】:

    应用与@Josh Gray 类似的语法,您可以将其夹在pivot_longer / pivot_wider 之间以处理15 列。这是一个有两个的示例:

    dat <- tibble::tribble(
      ~ UR_yes, ~UR_no, 
      "95.8%, 228 гол.",   "5.8%, 28 гол.",   # not working #s just saving time
      "98.3%, 234 гол.",   "8.7%, 35 гол.",
      "98.3%, 234 гол.",   "8.7%, 35 гол." 
    )
    
    library(tidyverse)
    dat %>%
      mutate(row = row_number()) %>%
      pivot_longer(-row) %>%
      separate(value, c("perc", "num"),  sep="[%, ]+", extra = "drop") %>%
      select(row, name, num) %>%
      pivot_wider(names_from = name, values_from = num)
    

    结果:

    # A tibble: 3 x 3
        row UR_yes UR_no
      <int> <chr>  <chr>
    1     1 228    28   
    2     2 234    35   
    3     3 234    35   
    

    (在 base r 中可能有一种非常简洁的方法可以在整个表中使用正则表达式。)

    【讨论】:

      猜你喜欢
      • 2013-01-13
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 1970-01-01
      相关资源
      最近更新 更多