Tôi có một tập dữ liệu tương đối lớn (16.000 + x ~ 31). Nói cách khác, nó đủ lớn đến mức tôi không muốn thao tác nó theo từng dòng trong Excel. Dữ liệu có dạng này:Cách thêm cột đếm dựa trên giá trị trong các cột khác trong R
block site day X1 X2
1 1 1 0.4 5.1
1 1 2 0.8 1.1
1 1 3 1.1 4.2
1 2 1 ... ...
1 2 2
1 2 3
2 3 1
2 3 2
2 3 3
2 4 1
2 4 2
2 4 3
Như bạn có thể thấy, số lượng trang web liên tục nhưng tôi muốn một cột mà số trang web đặt lại với mỗi khối. Ví dụ, tôi muốn một cái gì đó như thế này dưới đây:
block site day X1 X2 site2
1 1 1 0.4 5.1 1
1 1 2 0.8 1.1 1
1 1 3 1.1 4.2 1
1 2 1 ... ... 2
1 2 2 2
1 2 3 2
2 3 1 1
2 3 2 1
2 3 3 1
2 4 1 2
2 4 2 2
2 4 3 2
Tôi đã suy nghĩ về việc sử dụng hàm R rle nhưng không chắc chắn nếu nó sẽ làm việc vì biến chứng với ngày. Nếu không, tôi sẽ thử một cái gì đó như:
Data$site2 <- sequence(rle(Data$block)$lengths)
Có ai có đề xuất thêm số lượng cột (chuỗi) số trang trong mỗi khối không? Nếu nó giúp, có số ngày tương tự (263) được ghi lại cho mỗi trang nhưng có số lượng trang web khác nhau trên mỗi khối.
Cảm ơn bạn, điều này đã làm việc một cách hoàn hảo. Tôi đã nhìn thấy plyr trước nhưng không bao giờ sử dụng nó. ddply là hoàn hảo, tôi đã thực sự temped để phá vỡ các ma trận, sử dụng reshape (= rộng) vào ngày, áp dụng các rle (trang web) và sau đó cố gắng để reshape (= dài). Tôi không biết nếu nó sẽ làm việc nhưng tôi đã tìm thấy có khoảng 1000 cách dễ dàng hơn để làm điều đó. Tôi thích giải pháp dpdply. cảm ơn một lần nữa. – djhocking
Đẹp nhất, chỉ cần thử các tùy chọn ddply trên một vấn đề tương tự và làm việc hoàn hảo đầu tiên thời gian – Ell