【问题标题】:How to convert a two column csv into a vector of the second column?如何将两列csv转换为第二列的向量?
【发布时间】:2019-08-14 08:04:56
【问题描述】:
> temp = list.files(pattern="*.csv")
> myfiles = lapply(temp, read.csv)

我正在使用上述代码读取多个 csv 文件。结果是每个 cvs 文件都以以下形式读取:

> myfiles
[[1]]
         Date   Payment
1  19/10/2003 -13275.00
2  19/11/2003    940.49
3  19/12/2003    884.71
4  19/01/2004    832.11
5  19/02/2004    782.49
6  19/03/2004    735.74
7  19/04/2004    691.64
8  19/05/2004    650.09
9  19/06/2004    610.91
10 19/07/2004    573.99
11 19/08/2004    539.20
12 19/09/2004    506.42
13 19/10/2004    475.54
14 19/11/2004    441.05
15 19/12/2004    413.91
16 19/01/2005    388.37
17 19/02/2005    364.31
18 19/03/2005    341.66
19 19/04/2005    320.34
20 19/05/2005    300.28
21 19/06/2005    281.39
22 19/07/2005    263.63
23 19/08/2005    246.91
24 19/09/2005    231.20
25 19/10/2005    216.41
26 19/11/2005    202.51
27 19/12/2005    189.43
28 19/01/2006    177.15
29 19/02/2006    165.60
30 19/03/2006    154.75
31 19/04/2006    144.55
32 19/05/2006    134.98
33 19/06/2006    125.99
34 19/07/2006    117.55
35 19/08/2006    109.62
36 19/09/2006    102.18

但是我需要以这种形式阅读 csv 文件:


> read.csv("cashflows1.csv", skip=1, header=F)$V2


[1] -13275.00    940.49    884.71    832.11    782.49    735.74    691.64    650.09    610.91    573.99    539.20
[12]    506.42    475.54    441.05    413.91    388.37    364.31    341.66    320.34    300.28    281.39    263.63
[23]    246.91    231.20    216.41    202.51    189.43    177.15    165.60    154.75    144.55    134.98    125.99
[34]    117.55    109.62    102.18


有没有办法让我更改 "> myfiles = lapply(temp, read.csv)" 以便它以所需格式读取所有 csv 文件(第二列的向量,标题为“付款”) .

【问题讨论】:

  • 哈?为什么不使用lapply(temp, function(x) read.csv(x, skip=1, header=F)$V2)
  • 你需要c(sapply(myfiles, `[[`, 2)) 吗?
  • 这正是我要找的,谢谢!

标签: r csv vector


【解决方案1】:

读取myfiles 中的文件后,您可以对第二列进行子集化并将其转换为向量

c(sapply(myfiles, `[[`, 2))

或者使用列名

c(sapply(myfiles, `[[`, "Payment"))

【讨论】:

    【解决方案2】:

    我们可以使用map

    library(purrr)
    unlist(map(myfiles, pluck, 'Payment'))
    

    另外,我们可以使用freadselect 来只读取选定的列

    library(data.table)
    unlist(lapply(temp, fread, select = "Payment"))
    

    【讨论】:

      猜你喜欢
      • 2015-05-23
      • 2021-05-19
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      • 1970-01-01
      • 2018-06-23
      • 2016-08-29
      • 2015-12-31
      相关资源
      最近更新 更多