我正在處理車輛ID隨時間重複出現的數據集。單一車輛的一個例子是類似下面的東西:使用ddply中的變換在R中添加新列
df <- data.frame(veh = rep(2,15), lane=c(rep(3,5), rep(4,5), rep(5,5)), frame=1:15)
我想添加一個新列在其中「是」意味着有車道和變化「」意味着沒有換道。我使用ddply如下:
> ddply(df, 'veh', transform,change=c(NA,ifelse(diff(df$lane)!=0,"yes",".")))
veh lane frame change
1 2 3 1 <NA>
2 2 3 2 .
3 2 3 3 .
4 2 3 4 .
5 2 3 5 .
6 2 4 6 yes
7 2 4 7 .
8 2 4 8 .
9 2 4 9 .
10 2 4 10 .
11 2 5 11 yes
12 2 5 12 .
13 2 5 13 .
14 2 5 14 .
15 2 5 15 .
這給了我所需的輸出。但是,在我的原始數據集中,有更多的車輛ID(DF中的'veh')。第一車輛ID「14」重複455次和行的總數是23454.當我使用的原始數據集相同的功能我得到以下錯誤:
> hv1 <- ddply(hv, 'Vehicle.ID', transform,change=c(NA,ifelse(diff(hv$Lane)!=0,"yes",".")))
Error in data.frame(list(Vehicle.ID = c(14L, 14L, 14L, 14L, 14L, 14L, :
arguments imply differing number of rows: 455, 23454
注意,「高壓」是的名稱我的原始數據集。你能指出代碼中的問題嗎?
擺脫'HV $'的;否則'transform'會嘗試從你的數據框中插入整個列,而不是'ddply'作爲第一個參數給出的部分。 – BrodieG
@BrodieG謝謝!刪除hv $解決了這個問題。 –