Saya memiliki kerangka data yang disebutkan di bawah ini:
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")
Saya menggunakan kode yang disebutkan di bawah ini:
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())
Yang memberi saya output berikut:
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
................
................
Saya ingin mendapatkan output berikut menggunakan DF, di mana Statuskolom memiliki 3 nilai berbeda dan Flag2memiliki nilai atau [nol] atau NA dan akhirnya Flag3kolom memiliki nilai 7 berbeda dengan [null] atau NA. Untuk satu perbedaan, IDkami memiliki beberapa entri Flag3kolom.
Saya Perlu membuat kerangka data berikut, dengan membuat 3 grup berdasarkan Valueseperti 0-15000, 15000-50000.
- Jika untuk ID yang berbeda
Flag2memiliki beberapa nilai selain 0 atau [null] / NA tetapiFlag3memiliki nilai 0 atau [null] / NA maka akan menjadia. - Jika untuk ID yang berbeda
Flag3memiliki beberapa nilai selain 0 atau [null] / NA tetapiFlag2memiliki nilai 0 atau [null] / NA maka akan menjadib - Jika untuk ID yang berbeda keduanya
Flag2&Flag3memiliki beberapa nilai selain 0 atau [Null] / NA maka akan menjadic - Jika untuk ID yang berbeda keduanya
Flag2&Flag3memiliki nilai 0 atau [Null] / NA itu akan menjadid
Saya ingin mengatur datafrmae yang disebutkan di atas dalam struktur percentdan Totalkolom berikut.
Saya telah menyebutkan persentase ingin 2/5menunjukkan bahwa status akan dibagi dengan Total sedangkan sub_statusakan dibagi masing-masing 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
Saya telah menyebutkan output yang diperlukan berdasarkan pada tanggal terbaru yaitu 16/03/2020, jika dataframe tidak memiliki tanggal terbaru karena startdatetetap menyimpan semua nilai 0 dalam dataframe output. Kolom persentase hanya untuk referensi, akan ada nilai persentase yang dihitung ,.
Juga, saya ingin menjaga struktur statis. Sebagai Contoh, jika untuk salah satu parameter tidak ada selama sehari struktur output akan sama dengan nilai 0.
Sebagai Contoh, Misalkan tanggal 17/03/2020tidak memiliki baris dengan status SAatau sub_status ctempat tempat untuk itu akan ada di output dengan nilai sebagai 0.
dputdataset yang Anda suka - ini adalah blok kode ketiga. Kode sebelumnya tidak tampak relevan karena Anda tampaknya puas dengan hasilnya.
2/5hanya untuk tujuan representasi. Akan ada nilai persentase hanya dengan 2 titik desimal dengan tanda persentase.