我尝试仅从文件夹中的所有csv文件加载第3列。每个文件有20,000行和4列,我想最终得到一个n(n =数字或文件;在这种情况下为6)列和20,000行的数据帧。我尝试使用public class FibonacciNumber {
public static long fib(int n) {
if (n <= 1) return n;
else return fib(n-1) + fib(n-2);
}
public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
System.out.println(N);
for (int i = 1; i <= N; i++)
System.out.println(i + ": " + fib(i));
}
}
指定要加载的列,但没有成功。此外,我无法创建n列而不是4列(其中每列代表在所有文件中找到的一个变量)。我试图获得一个6 * 20,000的数据框,其中每列代表每个文件的指定变量(每个文件的第3列)。有什么建议吗?
答案 0 :(得分:2)
就像我在评论中所说的那样,您可以使用select
的{{1}}或drop
个参数。
另一种解决方案是读取文件fread
并使用sapply
的{{1}}参数创建id列。接下来,您将数据集重新整形为宽格式,如下所示(为此需要data.table 1.9.7):
idcol
结果是一个数据表,其中使用的文件名为列名。
答案 1 :(得分:1)
尝试使用select
fread
参数来保留列,或drop
不读取列,而不是colClasses
。 (使用data.table 1.9.6
)
类似的东西:
ltab <- lapply(files, fread, header=TRUE, select = 3, nrows=r))
您应该获得包含20000行和1列
的6个表的列表然后Tab <- do.call("cbind", ltab)
应该有用。