我想統計一下type
有多少行,如果它們滿足條件x == 0
。有點像一組由SQL有條件計數和分組依據R
下面是數據的一個例子
type x
search 0
NULL 0
public 0
search 1
home 0
home 1
search 0
我想統計一下type
有多少行,如果它們滿足條件x == 0
。有點像一組由SQL有條件計數和分組依據R
下面是數據的一個例子
type x
search 0
NULL 0
public 0
search 1
home 0
home 1
search 0
我假設您想要查找特定條件(當變量具有某個值時)的行數。
如果是這種情況,那麼我想你有一個「x」作爲列中表示的變量。 「x」可以取多個值。假設你想找到多少行你的數據在那裏當x爲0。這可以通過這樣做:
nrow(subset(data, x=="0")
「數據」是R中的數據集對象名稱
編輯:
我現在正在看到您編輯的數據框。您可以使用它來解決問題:
library(dplyr)
df2 <- df %>% group_by(x,type) %>% tally()
這給:
table(data$type, data$x)
非常感謝!我知道有一個非常簡單的解決方案:) – datacurious 2014-09-25 16:15:51
考慮到數據幀, df=data.frame(type=c('search','NULL','public','search','home','home','search'),x=c(0,0,0,1,0,1,0))
如果你想知道在第1列多少每個值的在列中的值零2,那麼你可以使用: table(df)[,1]
只要你只用1和0的努力得到了答案:
home NULL public search
1 1 1 2
您也可以與dplyr
包做
x type n
1 0 home 1
2 0 NULL 1
3 0 public 1
4 0 search 2
5 1 home 1
6 1 search 1
您也可以使用sqldf包:
library(sqldf)
df <- data.frame(type=c('search','NULL','public','search','home','home','search'),x=c(0,0,0,1,0,1,0))
sqldf("SELECT type, COUNT(*) FROM df WHERE x=0 GROUP BY type")
這給出瞭如下結果:
type COUNT(*)
1 NULL 1
2 home 1
3 public 1
4 search 2
鑑於你的數據是結構化的數據幀,下面的代碼具有更好的運行時間比上面給出的答案:
nrow(data[data$x=="0"])
您可以測試運行使用時間:
ptm <- proc.time()
nrow(subset(data, x == "0"))
proc.time() - ptm
ptm <- proc.time()
nrow(data[data$x=="0"]))
proc.time() - ptm
在我的情況下,運行時間快了大約15倍,有100萬行。
你可以用R代碼包含數據示例嗎?我很努力地理解你要求的內容以及你的示例如何適合... – CephBirk 2014-09-25 15:33:00
當包括樣本輸入時,還包括期望的輸出。看看[如何製作一個可重複的例子](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) – MrFlick 2014-09-25 15:35:41