इस शीर्षक को संपादित करने के लिए स्वतंत्र महसूस इसे और अधिक समझ में आता है/generalizable बनाने के लिए ...data.table: मार्क से पहले/समूहों के भीतर प्रतीक की घटना के बाद
मैं 3 कॉलम कि फार्म के साथ एक data.table वस्तु है समूह (id
, id2
pol_loc
)। इन समूहों के भीतर पंक्ति अवलोकन हैं और प्रत्येक समूह या NA
के लिए कुछ पंक्तियों पर एक तारांकन होगा। मैं तारों के सापेक्ष पंक्ति के प्रत्येक समूह के लिए कुशलतापूर्वक संकेतक बनाना चाहता हूं (पहले - 1, बाद में 0)।
id id2 pol_loc non_pol cluster_tag
1: 1 1 3 do NA
2: 1 1 3 you NA
3: 1 1 3 * NA
4: 1 1 3 it NA
-------------------------------------
5: 1 2 3 but 4
6: 1 2 3 i NA
7: 1 2 3 * NA
8: 1 2 3 really 2
9: 1 2 3 bad NA
-------------------------------------
10: 1 2 5 but 4
11: 1 2 5 i NA
12: 1 2 5 hate NA
13: 1 2 5 really 2
14: 1 2 5 * NA
15: 1 2 5 dogs NA
-------------------------------------
16: 2 1 4 i NA
17: 2 1 4 am NA
18: 2 1 4 the NA
19: 2 1 4 * NA
20: 2 1 4 friend NA
-------------------------------------
21: 3 1 4 do NA
22: 3 1 4 you NA
23: 3 1 4 really 2
24: 3 1 4 * NA
-------------------------------------
25: 3 2 NA NA NA
id id2 pol_loc non_pol cluster_tag
वांछित उत्पादन:
यहाँ वांछित आउटपुट है: यहाँ डेटा तालिका कैसा दिखाई देता है है
id id2 pol_loc non_pol cluster_tag before
1: 1 1 3 do NA 1
2: 1 1 3 you NA 1
3: 1 1 3 * NA NA
4: 1 1 3 it NA 0
----------------------------------------------
5: 1 2 3 but 4 1
6: 1 2 3 i NA 1
7: 1 2 3 * NA NA
8: 1 2 3 really 2 0
9: 1 2 3 bad NA 0
----------------------------------------------
10: 1 2 5 but 4 1
11: 1 2 5 i NA 1
12: 1 2 5 hate NA 1
13: 1 2 5 really 2 1
14: 1 2 5 * NA NA
15: 1 2 5 dogs NA 0
----------------------------------------------
16: 2 1 4 i NA 1
17: 2 1 4 am NA 1
18: 2 1 4 the NA 1
19: 2 1 4 * NA NA
20: 2 1 4 friend NA 0
----------------------------------------------
21: 3 1 4 do NA 1
22: 3 1 4 you NA 1
23: 3 1 4 really 2 1
24: 3 1 4 * NA NA
----------------------------------------------
25: 3 2 NA NA NA NA
id id2 pol_loc non_pol cluster_tag before
मेगावाट
dat <- structure(list(id = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L),
id2 = c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L), pol_loc = c(3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 5L, 5L, 5L, 5L, 5L, 5L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, NA), non_pol = c("do", "you",
"*", "it", "but", "i", "*", "really", "bad", "but", "i",
"hate", "really", "*", "dogs", "i", "am", "the", "*", "friend",
"do", "you", "really", "*", NA), cluster_tag = c(NA, NA,
NA, NA, "4", NA, NA, "2", NA, "4", NA, NA, "2", NA, NA, NA,
NA, NA, NA, NA, NA, NA, "2", NA, NA)), row.names = c(NA,
-25L), class = "data.frame", .Names = c("id", "id2", "pol_loc",
"non_pol", "cluster_tag"))
library(data.table)
setDT(dat)
EDIT यदि यह NA
एस 0
या 1
बन सकता है तो यह आसान या अधिक कुशल बनाता है यह कोई फर्क नहीं पड़ता है और मुझे लगता है कि यह अधिक कुशल है।
प्रयास करें यह एक बहुत बेहतर है। – akrun
अच्छा सरल लेकिन मैं इस मार्ग पर जाने के लिए सोचा नहीं होता। बहुत बढ़िया। –
'1-cumsum' 0/1 युद्ध बनाने के लिए मेरे लिए विचित्र लग रहा है। मैं पहले से जाऊंगा: = + (। I <= I. [जो (non_pol == "*")]) 'या '1: .N <= जो (non_pol ==" * ")' – Frank