【问题标题】:Delete some characters from a dataframe in R从R中的数据框中删除一些字符
【发布时间】:2020-05-21 08:07:31
【问题描述】:

我对在 R 中操作数据框很陌生。我需要通过加入其他几个数据框来创建一个数据框,每个数据框都包含一些数据。 我已成功加入他们,但我明白了:

https://i.stack.imgur.com/SkFDg.png

我想要的是一个干净的数据框,所以我想删除 、 " " 和 $ 字符以获得“真实”数据框。你能帮我解决这个问题吗?非常感谢!

PS:我正在使用 dplyr 和 statsr 库,但不知道这个信息是否有用......

【问题讨论】:

  • 欢迎来到 StackOverflow!请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
  • 我想要的干净数据框:link
  • 你好。看看我上面评论的链接。我们需要这些示例是可重现的。通常我们通过dput()

标签: r dataframe dplyr


【解决方案1】:

您的数据看起来像逗号分隔格式 (csv)。最简单的方法可能是将其保存为纯文本并使用csv.get 读取文件。

【讨论】:

    【解决方案2】:

    正如@Jan 所说,最好的方法是更恰当地读入数据。如果出于某种原因,这不是一个可行的选择,那么这可能会起作用:

    首先,一些说明性数据:

    v1 <- c(',"Name","Area","Population"')
    v2 <- c(',"Afghanistan",652230,32564342')
    v3 <- c(',"Akrotiri",123,NA"')
    v4 <- c(',"Albania",28748,3029278')
    
    df1 <- as.data.frame(rbind(v1,v2,v3,v4))
    df1
                                   V1
    v1    ,"Name","Area","Population"
    v2 ,"Afghanistan",652230,32564342
    v3            ,"Akrotiri",123,NA"
    v4       ,"Albania",28748,3029278
    

    第一步是 (i) 使用 gsub 删除前导逗号和引号,(ii) 使用 strsplit 拆分逗号处的行,(iii) 将结果保存为数据框使用as.data.frame,以及(iv)使用t转置它:

    df2 <- t(as.data.frame(apply(df1, 2, function(x) strsplit(trimws(gsub('^,|"', '', x)),","))))
    

    剩下的只是装饰性的:首先删除行名,然后添加正确的列名,最后删除第一行(其中也包含名称):

    rownames(df2) <- NULL   
    colnames(df2) <- df2[1,]
    df3 <- as.data.frame(df2[-1,]) 
    

    结果是一个整洁干净的结构:

    df3
             Name   Area Population
    1 Afghanistan 652230   32564342
    2    Akrotiri    123         NA
    3     Albania  28748    3029278
    

    【讨论】:

      猜你喜欢
      • 2022-08-05
      • 1970-01-01
      • 1970-01-01
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      相关资源
      最近更新 更多