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 Status
kolom memiliki 3 nilai berbeda dan Flag2
memiliki nilai atau [nol] atau NA dan akhirnya Flag3
kolom memiliki nilai 7 berbeda dengan [null] atau NA. Untuk satu perbedaan, ID
kami memiliki beberapa entri Flag3
kolom.
Saya Perlu membuat kerangka data berikut, dengan membuat 3 grup berdasarkan Value
seperti 0-15000, 15000-50000.
- Jika untuk ID yang berbeda
Flag2
memiliki beberapa nilai selain 0 atau [null] / NA tetapiFlag3
memiliki nilai 0 atau [null] / NA maka akan menjadia
. - Jika untuk ID yang berbeda
Flag3
memiliki beberapa nilai selain 0 atau [null] / NA tetapiFlag2
memiliki nilai 0 atau [null] / NA maka akan menjadib
- Jika untuk ID yang berbeda keduanya
Flag2
&Flag3
memiliki beberapa nilai selain 0 atau [Null] / NA maka akan menjadic
- Jika untuk ID yang berbeda keduanya
Flag2
&Flag3
memiliki nilai 0 atau [Null] / NA itu akan menjadid
Saya ingin mengatur datafrmae yang disebutkan di atas dalam struktur percent
dan Total
kolom berikut.
Saya telah menyebutkan persentase ingin 2/5
menunjukkan bahwa status akan dibagi dengan Total sedangkan sub_status
akan 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 startdate
tetap 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/2020
tidak memiliki baris dengan status SA
atau sub_status c
tempat tempat untuk itu akan ada di output dengan nilai sebagai 0
.
dput
dataset yang Anda suka - ini adalah blok kode ketiga. Kode sebelumnya tidak tampak relevan karena Anda tampaknya puas dengan hasilnya.
2/5
hanya untuk tujuan representasi. Akan ada nilai persentase hanya dengan 2 titik desimal dengan tanda persentase.