800 - 700 kanal oranıyla yeni bir sütun nasıl oluşturulur? Kendimi bu tür sorunlara sıkça rastladığımdan çok daha karmaşık data.tables ile buluyorum. Diğer örnekler aynı zamanın 800 kanalını aynı zamanın 700 kanalından çıkarmak olacaktır.Aynı data.table içinde iki grupta bir işlem gerçekleştirilir, her iki grubun da j alanında başvuruda bulunması gerekenler
Örnek: Görebildiğim
kdat <- data.table(channel=c(rep(c(700,800), each = 3)),
time=c(rep(1:3,2)),
value=c(1:6))
channel time value
1: 700 1 1
2: 700 2 2
3: 700 3 3
4: 800 1 4
5: 800 2 5
6: 800 3 6
Seçenekler
şunlardır: Uzun geniş formata ve o andan itibaren1.) Taşı, bölmek sonra uzun geri dönüştürün.
- Sevmiyorum çünkü uzun ve geniş arasında gidip gelmek zorunda.
not: Tüm verileri bir arada tutmaktan ve tüm verileri tek bir data.table dosyasından yapabilirim.
2.) kdat [kanal == 800,. (Değer)]/kdat [kanal = = 700,. (Değer)]
- Bunu sevmiyorum çünkü aynı süreleri denetleme yok vb eşleştirilir.
3.) Bunu yapmak için bir yol var mı? SD veya eksik olduğum başka bir yolla mı?
İstenilen çıktı:
channel time value ratio
1: 700 1 1 4
...
6: 800 3 6 2
'kdat [, değer [channel == 800]/değer [channel == 700], by = time]'? – MichaelChirico
@MichaelChirico evet çalışır, istenen çıktı almak için küçük bir değişiklik: 'kdat [, oran: = değer [kanal == 800]/değer [kanal == 700], by = zaman]' – kbarreto