首页 > 解决方案 > 从R中的数据框中删除一些字符

问题描述

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

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

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

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

标签: rdataframedplyr

解决方案


正如@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

推荐阅读