2014-04-11 195 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