Tôi có một khung dữ liệu được đề cập dưới đây:
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")
Tôi đang sử dụng mã được đề cập dưới đây:
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())
Cung cấp cho tôi đầu ra sau:
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
................
................
Tôi muốn nhận đầu ra sau bằng cách sử dụng DF
, trong đó Status
cột có 3 giá trị riêng biệt và Flag2
có các giá trị hoặc [null] hoặc NA và cuối cùng Flag3
cột có 7 giá trị riêng biệt với [null] hoặc NA. Đối với một khác biệt, ID
chúng tôi có nhiều mục của Flag3
cột.
Tôi cần tạo khung dữ liệu sau, bằng cách tạo 3 nhóm dựa trên Value
như 0-15000, 15000-50000.
- Nếu đối với một ID riêng biệt
Flag2
có một số giá trị khác 0 hoặc [null] / NA nhưngFlag3
có giá trị 0 hoặc [null] / NA thì nó sẽ như vậya
. - Nếu đối với một ID riêng biệt
Flag3
có một số giá trị khác 0 hoặc [null] / NA nhưngFlag2
có giá trị 0 hoặc [null] / NA thì đó sẽ làb
- Nếu đối với một ID riêng biệt cả
Flag2
&Flag3
có một số giá trị khác 0 hoặc [Null] / NA thì đó sẽ làc
- Nếu đối với một ID riêng biệt cả
Flag2
&Flag3
có giá trị 0 hoặc [Không] / NA thì đó sẽ làd
Tôi muốn sắp xếp các datafrmae đã đề cập ở trên trong cấu trúc sau percent
và Total
cột.
Tôi đã đề cập đến tỷ lệ phần trăm muốn 2/5
cho thấy trạng thái sẽ được chia cho Tổng trong khi sub_status
sẽ được chia cho tương ứng của chúng 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
Tôi đã đề cập đến đầu ra bắt buộc dựa trên ngày mới nhất là 16/03/2020, nếu khung dữ liệu không có ngày mới nhất theo như startdate
giữ tất cả giá trị 0 trong khung dữ liệu đầu ra. Cột tỷ lệ phần trăm chỉ dành cho tham chiếu sẽ có các giá trị phần trăm được tính toán ,.
Ngoài ra, tôi muốn giữ cấu trúc tĩnh. Ví dụ: nếu không có bất kỳ tham số nào trong một ngày thì cấu trúc đầu ra sẽ giống với giá trị 0.
Ví dụ: Giả sử ngày 17/03/2020
không có bất kỳ hàng nào có trạng thái SA
hoặc sub_status c
chủ sở hữu vị trí cho đó sẽ có ở đầu ra với giá trị là 0
.
dput
bộ dữ liệu bạn thích - đó là khối mã thứ ba. Mã trước đó không xuất hiện có liên quan vì bạn có vẻ như nội dung với đầu ra.
2/5
chỉ cho mục đích đại diện. Sẽ chỉ có giá trị phần trăm với 2 dấu thập phân có dấu phần trăm.