【问题标题】:Writing functions: Creating data processing functions with R software [closed]编写函数:使用 R 软件创建数据处理函数 [关闭]
【发布时间】:2019-02-11 15:55:54
【问题描述】:

“R”用户大家好!

请抽出一些时间来帮助我使用有关“数据处理功能”的“R”软件(初学者),其中我有三 (3) 个不同的 .csv 文件,名为“x2013、x2014、x2015”根据下图,每个年份都有相同的 6 列:Problem 并开始输入命令:

filenames=list.files() 
library(plyr) 
install.packages("plyr") 
import.list=adply(filenames,1,read.csv)

虽然我只是想总结一下来自三个来源 (csv) 的所有调用。任何形式的帮助将不胜感激。谢谢你帮助我!

【问题讨论】:

  • 请不要使用图片向我们展示一些东西。使用 dput 插入数据。阅读reproducible examples。对于合并数据,请搜索?rbind 或查看?merge
  • 如何添加特定列的内容?我也在考虑是否可以对我的 .csv 源进行“文本挖掘”,尽管我不太熟悉应该使用的正确命令。谢谢!
  • 请不要将代码发布为图片。人们很难复制和粘贴您的代码以尝试运行它或发布答案。

标签: r apply import-from-csv


【解决方案1】:

如果您想将read.csv 的结果汇总到一个data.frame 中,您可以对do.callrbind 使用以下方法,因为csv-files 具有相同数量的列。下面的代码从项目主目录中取出所有 csv 文件(列数应该相同)并连接成一个data.frame

# simulation of 3 data.frames with 6 columns and 10 rows
df1 <- as.data.frame(matrix(1:(10 * 6), ncol = 6))
df2 <- df1 * 2
df3 <- df1 * 3

write.csv(df1, "X2012.csv")
write.csv(df2, "X2013.csv")
write.csv(df3, "X2014.csv")


# Load all csv files from home directory
filenames <- list.files(".", pattern = "csv$")

import.list<- lapply(filenames, read.csv)

# concatenate list of data.frames into one data.frame
df_res <- do.call(rbind, import.list)
str(df_res)

输出是一个data.frame,有 6 列和 30 行:

'data.frame':   30 obs. of  7 variables:
 $ X : int  1 2 3 4 5 6 7 8 9 10 ...
 $ V1: int  1 2 3 4 5 6 7 8 9 10 ...
 $ V2: int  11 12 13 14 15 16 17 18 19 20 ...
 $ V3: int  21 22 23 24 25 26 27 28 29 30 ...
 $ V4: int  31 32 33 34 35 36 37 38 39 40 ...
 $ V5: int  41 42 43 44 45 46 47 48 49 50 ...
 $ V6: int  51 52 53 54 55 56 57 58 59 60 ...

【讨论】:

  • 非常感谢@Artem!我认为没有人会在这方面帮助我,因为他们可能误解了我的观点。再次感谢您!
  • 你好@Artem,我已经尝试输入这些命令,但最终无法使用以下命令:> write.csv(dx2013,"x2013.csv") > write.csv(dx2014,"x2014 .csv") > write.csv(dx2015,"x2015.csv") > #从目录加载所有csv文件 > filenames import.list #concatenate list of data.frames into one data.frame > df_res str(df_res) str(df_res) 中的错误:找不到对象“df_res”
  • dx2013, dx2014, dx2015 有不同的列数。请输入ncol(dx2013)ncol(dx2014)ncol(dx2015) 并检查每个data.frame 中的列数。
  • 那么,我会在“ncol”中指明确切的列数吗?喜欢:>write.csv 8651(x2013,"x2013.csv")
  • 嗨 Reynier,在您最初的问题中,您提到它是“相同的 6 列”。如果不是这种情况,您需要手动选择rbind 的列,此功能仅适用于具有相同列数的 data.frames\matrices。请发布一个新问题,如果没有人回答,我会亲自回答你;) –
猜你喜欢
  • 2021-01-15
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-06
  • 1970-01-01
相关资源
最近更新 更多