2014-04-11 121 views
-2

我从.csv文件下列数据:如何从.csv文件创建表格?

Sp Country RMU   Temp Males Females 
Cc Australia Pacific, S 25.00 0 7  
Cc Australia Pacific, S 26.00 17 1 
Ei STP  Atlantic, E 28.00 21 2  
Ei Brazil Atlantic, W 27.50 8 1 
Nd Australia Pacific, S 28.00 2 0 

我想创建一个男性价值观的新表,只是其中“SP ==抄送”,意思是

Males 
0 
17 

我试过这个:

m=subset(file3_TMF, Sp=="Cc")$Males 

但它正在创建一个“整数(空)”。

任何人都可以帮忙吗?

+1

考虑使用dput提供数据以便其他人可以更轻松地帮助您 – JPC

回答

0

那些“”在环网柜领域开创一片混乱......因此,使用你的数据,在假定最重要的是你有“”在‘太平洋S’之间的一个.csv:

1)扫描文件(读取csv文件)
2)unlist(扫描结果是一个列表)
3)未列入具有8列的矩阵(由于“,”在S/E/W之前)

> dat <- matrix(unlist(scan(file = "dat.csv", what = list(rep("character",8)), 
       sep = ",", skip = 1)), ncol = 8, byrow = TRUE) 

4)子集的行,其中1列== “抄送”,显示第7栏( “男性”)

> dat[dat[,1] == "Cc",7] 
0

在你的m=subset(file3_TMF, Sp=="Cc")$Males,你有点失灵。

应该subset(file3_TMF$Males, file3_TMF$Sp == "Cc")

下面的代码行中的任何一个也将子集的数据Males,使得SpCc
前两个让你男值的子集,最后返回原始数据的所有行的其中Sp == "Cc"

假设dat是您的数据的名称。

> dat$Males[dat$Sp == "Cc"] 
[1] 0 17 

> dat[dat$Sp == "Cc", ] 
    Sp Country  RMU Temp Males Females 
1 Cc Australia Pacific, S 25  0  7 
2 Cc Australia Pacific, S 26 17  1