2016-06-28 62 views
-1
創建一個類,頻率表

我繪製在R A圖:如何R中

OBD=read.csv("OBD.CSV",header = TRUE,stringsAsFactors=FALSE) 
x1 <- OBD$Time1 
x2 <- OBD$Time2 
y1<-OBD$Vehicle_speed 
y2 <-OBD$Engine_speed 
par(mar=c(5,4,4,5)+.1) 
plot(x1,y1,type="l",col="yellow",ylab = "Vehicle speed") 
par(new=TRUE) 
plot(x2,y2,type="l",col="blue4",xaxt="n",yaxt="n",xlab="Time",ylab="") 
axis(4) 
mtext("Engine speed",side=4,line=3) 
legend("topleft",col=c("blue4","yellow"),lty=1,legend=c("y1","y2")) 

我的CSV文件包含82698行10列:

Engine_speed Time2 
650  0 
650  0 
650  0.001 
651  0.001 
600.5 0.202 
600.5 0.202 
600.5 0.202 
600  0.203 
600  0.203 
600.5 0.203 
1795 0.888 
1800 0.888 
1796 0.888 
1800 0.888 
1808.5 0.889 
2038.5 1.217 
2032 1.218 
2036.5 1.218 
2037.5 1.218 
2028 1.218 
2032.5 1.218 
599.5 0.728 
599.5 0.728 
600  0.728 
600  0.728 
600  0.728 
599.5 0.728 
599.5 0.729 
599.5 0.729 
599.5 0.729 
599.5 0.729 

我希望得到一個min_engine速度,最大發動機轉速,標準偏差和頻率。

Engine Speed Frequency 
Below 600 6818 
600-800 12014 
800-1000 2952 
1000-1200 4443 
1200-1400 7824 
1400-1600 9969 
1600-1800 12682 
1800-2000 6794 
2000-2200 9922 
2200-2400 3790 
2400-2600 5197 
2600-2800 293 

我得到了類和頻率(我想要得到的模式,我覺得R沒有在模式內置)在Excel中。我想在R中製作類似的表格。我嘗試使用數據框。

Mode <- function(MD) 
    { 
MDX <- unique(MD) 
MDX[which.max(tabulate(match(MD, MDX)))] 
} 

table(OBD$Engine_speed) 

我是新來的R.請幫我在這

+0

'庫(dplyr ); df%>%count(Engine_speed = cut(Engine_speed,seq(400,2800,by = 200),labels = paste(seq(400,2600,by = 200),seq(600,2800,by = 200),sep =' - ')))' – alistaire

+0

或base:'data.frame(table(Engine_speed = cut(df $ Engine_speed,breaks = seq(400,2800,200)),labels = paste(seq(400,2600,by = 200),seq(600,2800,by = 200),sep =' - '))))'在這兩種情況下,大部分只是製作漂亮的標籤。如果你喜歡的話,把這個論點砍掉。 – alistaire

回答

1

我們可以使用data.table

library(data.table) 
setDT(df1)[, .N, 
    .(Engine_speed = cut(Engine_speed, breaks = seq(400, 2800, by = 200)))] 

或者使用base R

aggregate(Time2~Engine_Speed, transform(df1, Engine_Speed = cut(Engine_speed, 
      breaks = seq(400, 2800, by = 200))), FUN = length)