Aşağıda belirtilen bir veri çerçevesi var:
structure(
list(ID = c("P-1", " P-1", "P-1", "P-2", "P-3", "P-4", "P-5", "P-6", "P-7",
"P-8"),
Date = c("2020-03-16 12:11:33", "2020-03-16 13:16:04",
"2020-03-16 06:13:55", "2020-03-16 10:03:43",
"2020-03-16 12:37:09", "2020-03-16 06:40:24",
"2020-03-16 09:46:45", "2020-03-16 12:07:44",
"2020-03-16 14:09:51", "2020-03-16 09:19:23"),
Status = c("SA", "SA", "SA", "RE", "RE", "RE", "RE", "XA", "XA", "XA"),
Flag = c("L", "L", "L", NA, "K", "J", NA, NA, "H", "G"),
Value = c(5929.81, 5929.81, 5929.81, NA, 6969.33, 740.08, NA, NA, 1524.8,
NA),
Flag2 = c("CL", "CL", "CL", NA, "RY", "", NA, NA, "", NA),
Flag3 = c(NA, NA, NA, NA, "RI", "PO", NA, "SS", "DDP", NA)),
.Names=c("ID", "Date", "Status", "Flag", "Value", "Flag2", "Flag3"),
row.names=c(NA, 10L), class="data.frame")
Aşağıda belirtilen kodu kullanıyorum:
df %>% mutate(L = ifelse(Flag == "L",1,0),
K = ifelse(Flag == "K",1,0),
# etc for Flag) %>%
mutate(sub_status = NA) %>%
mutate(sub_status = ifelse(!is.na(Flag2) & Flag3 == 0, "a", sub_status),
sub_status = ifelse(is.na(Flag2) & Flag3 != 0, "b", sub_status),
# etc for sub-status) %>%
mutate(value_class = ifelse(0 <= Value & Value <= 15000, "0-15000",
"15000-50000")) %>%
group_by(Date, status, sub_status, value_class) %>%
summarise(L = sum(L),
K = sum(K),
# etc
count = n())
Hangi bana aşağıdaki çıktıyı sağlar:
Date Status sub_status value_class G H I J K L NA Count
2020-03-20 SA a 0-15000 0 0 0 0 1 1 0 2
2020-03-20 SA b 0-15000 0 0 0 0 1 0 0 1
................
................
Sütun ayrı 3 değerleri ve değerleri veya [null] veya NA ve son olarak sütun [null] veya NA ile farklı 7 değerleri DF
olduğu, kullanarak aşağıdaki çıktıyı almak istiyorum . Birincisi için birden çok sütun girdimiz var.Status
Flag2
Flag3
ID
Flag3
Value
0-15000, 15000-50000 gibi 3 grup oluşturarak aşağıdaki veri çerçevesini oluşturmam gerekiyor.
- Farklı bir kimlik için
Flag2
0 veya [null] / NAFlag3
dışında bir değere sahip ancak 0 veya [null] / NA değerine sahipse, o zaman olura
. - Farklı bir kimlik için
Flag3
0 veya [null] / NAFlag2
dışında bir değere sahip ancak 0 veya [null] / NA değerine sahipse,b
- Farklı bir kimlik için hem
Flag2
& hem deFlag3
0 veya [Null] / NA dışında bir değere sahipse,c
- Farklı bir kimlik için hem
Flag2
&Flag3
değeri 0 veya [Null] / NA değerine sahipse,d
Aşağıdaki yapının, yukarıda belirtilen datafrmae düzenlemek istiyorum percent
ve Total
sütun.
2/5
Durumun sub_status
Toplam'a bölüneceğini, kendi yüzdesine bölüneceğini göstermek istediklerini belirttim Status
.
16/03/2020 0 - 15000 15000 - 50000
Status count percent L K J H G [Null] count percent L K J H G [Null] Total
SA 1 1/8 (12.50%) 1 0 0 0 0 0 0 - 0 0 0 0 0 0 1
a 1 1/1(100.00%) 1 0 0 0 0 0 0 - 0 0 0 0 0 0 1
b 0 - 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0
c 0 - 1 0 0 0 0 0 0 - 0 0 0 0 0 0 0
d 0 - 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0
RE 4 50.00% 0 1 1 0 0 2 0 - 0 0 0 0 0 0 4
a 0 - 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0
b 1 25.00% 0 0 1 0 0 1 0 - 0 0 0 0 0 0 1
c 1 25.00% 0 1 0 0 0 1 0 - 0 0 0 0 0 0 1
d 2 50.00% 0 0 0 0 0 2 0 - 0 0 0 0 0 0 2
XA 3 37.50% 0 0 0 1 1 1 0 - 0 0 0 0 0 0 3
a 0 - 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0
b 2 66.67% 0 0 0 1 0 1 0 - 0 0 0 0 0 0 2
c 0 - 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0
d 1 33.33% 0 0 0 0 1 0 0 - 0 0 0 0 0 0 1
Total 8 100.00% 1 1 0 0 1 3 0 - 0 0 0 0 0 0 8
Eğer veri startdate
çerçevesi çıkış veri çerçevesindeki tüm değeri 0 olarak tutmak son tarih yoksa, 16/03/2020 olan son tarih dayalı gerekli çıktı bahsetti. Yüzde sütunu sadece referans içindir, hesaplanan yüzde değerleri olacaktır.
Ayrıca, yapıyı sabit tutmak istiyorum. Örneğin, eğer bir gün için herhangi bir parametre için mevcut değilse, çıkış yapısı 0 değeri ile aynı olacaktır.
Örnek için, varsayalım tarih 17/03/2020
duruma sahip satır yok SA
ya sub_status c
bu kadar değere sahip çıktıda olacak için yer tutucu 0
.
dput
veri kümesinden başlayabilir misiniz - bu üçüncü kod bloğudur. Çıktıdan memnun olduğunuz için önceki kod alakalı görünmüyor.
2/5
Sadece temsil amacıyla sakladığım yüzde sütunu . Sadece yüzde işareti ile 2 ondalık basamak ile yüzde değeri olacaktır.