r - 从R中的数据框中删除一些字符
问题描述
我对在 R 中操作数据框很陌生。我需要通过加入其他几个数据框来创建一个数据框,每个数据框都包含一些数据。我已经成功加入他们,但我明白了:
https://i.stack.imgur.com/SkFDg.png
我想要的是一个干净的数据框,所以我想删除 、 " " 和 $ 字符以获得“真实”数据框。你能帮我解决这个问题吗?非常感谢!
PS:我正在使用dplyr和statsr库,但不知道这个信息是否有用......
解决方案
正如@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
推荐阅读
- ruby-on-rails - 创建现有 Rails 项目的可安装 PWA(Web 应用程序)
- javascript - 在选择选项上绑定事件
- extjs - Extjs 3.4 如何在运行时更改网格列标题的工具提示?
- php - php中使用curl的函数在将url作为变量传递时给出404,但在传递字符串时给出200(ok)结果
- python - django 中的 openid 连接提供者和客户端示例
- reactjs - 如何通过在 Reactjs 中获取其 id 来删除映射数据
- javascript - 如何自动打开文件选择而不是按上传按钮?
- vba - Excel 工作簿共享 VBA 函数的最佳方式
- kotlin - 当列名及其值在运行时确定时如何使用jooq更新表
- sql - 禁止在 MS Access 查询中显示弹出警告框的 SQL 代码是什么?