2012-12-10 39 views
0

我有一個「csv」文件,其中包括3列,100 +行。所有列中的變量根據列1中的數據「時間」而改變。如何在R中的單個列中找到更改?

Time Temp Cloud 
1100 22 1 
1102 14 1 
1104 14 2 
1106 23 1 
1108 12 1 
1110 21 2 
1112 17 2 
1114 12 3 
1116 24 3 

我想知道什麼時候「Cloud」發生變化[例如,在第3行和第6行],我想獲得放置在該行的其他變量以及該行之前的行。 我該怎麼做? 謝謝

+2

你可以用'rle'做這個。 – Tim

+0

我試過蒂姆,但作爲初學者,我無法做到。 – forochelian

+0

如果你寫了你曾經嘗試過的,有效的和什麼都行不通的話,那將更容易幫助你。 – Tim

回答

1

diff幾乎會直接做到這一點。應用兩次。您調用示例數據d

> d[c(diff(d$Cloud) != 0,FALSE) | c(FALSE, diff(d$Cloud) != 0),] 
    Time Temp Cloud 
2 1102 14  1 
3 1104 14  2 
4 1106 23  1 
5 1108 12  1 
6 1110 21  2 
7 1112 17  2 
8 1114 12  3 
1

我會做這樣的事情:

df$Change <- c(0,sign(diff(df$Cloud))) 
subset(df,Change!=0)[,4] 

這將消除在沒有變化的行。