如何将一个 .csv 文件导入 R?

39

我有这个.csv文件:

ID,GRADES,GPA,Teacher,State

3,"C",2,"Teacher3","MA"

1,"A",4,"Teacher1","California"

我想做的是使用 R 统计软件读取文件,并将文件头部读入到某种列表或数组中(我是 R 的新手,并一直在寻找如何做到这一点,但到目前为止还没有找到)。

下面是我想做的伪代码:

inputfile=read.csv("C:/somedirectory")

for eachitem in row1:{

add eachitem to list
}

我想能够使用这些名称来调用每个垂直列,以便我可以执行计算。

我已经在Google上搜寻了一个小时,试图找出如何做到这一点,但是关于处理标题的信息并不多。

谢谢你的帮助!


7
与其在谷歌上浪费时间搜索,不如花些时间阅读附带R的文档。具体来说,可以查看R数据导入/导出中的“read.table变体”部分以及?read.csv - Joshua Ulrich
6个回答

50

您提到您将调用每个垂直列以便进行计算。我假设您只想检查每个单独的变量。可以通过以下方法完成。

df <- read.csv("myRandomFile.csv", header=TRUE)

df$ID

df$GRADES

df$GPA

将数据分配给一个变量可能会有帮助。

var3 <- df$GPA

是的,我确实想要访问每个变量,但我并不总是知道它们使用什么标签...我希望能够通过位置而不是实际名称循环遍历它们。 - Brian
1
str(df)将为您提供数据集中每个变量的变量名称。如果您想要了解每个单独变量的级别,例如GPA,请运行attributes(df$var3)或levels(df$var3)。 - ATMathew

9
你需要使用read.csv("C:/somedirectory/some/file.csv"),通常最好查看帮助页面,尤其是底部的示例部分。

6

正如Dirk所说,你需要的函数是'read.csv'或其他read.table变体之一。鉴于你提供的样本数据,我认为你需要像这样做:

setwd("c:/random/directory")

df <- read.csv("myRandomFile.csv", header=TRUE)

我们上面所做的只是将目录设置为您的.csv文件所在的位置,然后将.csv文件读入到名为df的数据帧中。您可以通过检查该对象的结构来确保数据正确加载:
str(df)

假设数据已经正确加载,您可以继续使用数据框中的数据执行任意数量的统计方法。我认为 summary(df) 是一个很好的起点。学习如何使用 R 中的帮助将非常有用,快速阅读 CRAN 上的帮助将节省您大量时间:http://cran.r-project.org/

3

您可以使用

df <- read.csv("filename.csv", header=TRUE)

# To loop each column
for (i in 1:ncol(df))
    {
    dosomething(df[,i])
    }
# To loop each row
for (i in 1:nrow(df))
    {
    dosomething(df[i,])
    }

此外,如果您想在每行/列上使用相同的函数,您可能需要查看apply函数(键入?applyhelp(apply))。

1
请查看以下内容,如果有帮助的话。
``` df<-read.csv("F:/test.csv",header=FALSE,nrows=1) df V1 V2 V3 V4 V5 1 ID GRADES GPA Teacher State a<-c(df) a[1] $V1 [1] ID Levels: ID a[2] $V2 [1] GRADES Levels: GRADES a[3] $V3 [1] GPA Levels: GPA a[4] $V4 [1] Teacher Levels: Teacher a[5] $V5 [1] State Levels: State ```

0

既然您说在读取数据后想要通过位置访问它,您应该了解R的子集和索引函数。

最简单的方法是

df[row,column]
#example
df[1:5,] #rows 1:5, all columns
df[,5] #all rows, column 5. 

其他方法在这里。我个人使用dplyr包进行直观的数据操作(不是按位置)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接