Tôi có một khung dữ liệu theo mẫu bên dưới dài:Transpose/reshape dataframe không có "timevar" từ lâu để định dạng rộng
Name MedName
Name1 atenolol 25mg
Name1 aspirin 81mg
Name1 sildenafil 100mg
Name2 atenolol 50mg
Name2 enalapril 20mg
Và muốn có được bên dưới (Tôi không quan tâm nếu tôi có thể nhận được các cột được đặt tên theo cách này, chỉ muốn các dữ liệu ở định dạng này):
Name medication1 medication2 medication3
Name1 atenolol 25mg aspirin 81mg sildenafil 100mg
Name2 atenolol 50mg enalapril 20mg NA
qua trang web rất này tôi đã trở thành familiarish với Reshape/gói reshape2, và đã trải qua nhiều nỗ lực để cố gắng có được điều này để làm việc nhưng cho đến nay đã thất bại.
Khi tôi cố gắng dcast(dataframe, Name ~ MedName, value.var='MedName')
tôi chỉ nhận được một loạt các cột là lá cờ của các tên thuốc (giá trị mà có được hoán là 1 hoặc 0) Ví dụ:
Name atenolol 25mg aspirin 81mg
Name1 1 1
Name2 0 0
Tôi cũng đã cố gắng một dcast(dataset, Name ~ variable)
sau khi tôi tan chảy tập dữ liệu, tuy nhiên điều này chỉ spits ra như sau (chỉ đếm có bao nhiêu meds mỗi người có):
Name MedName
Name1 3
name2 2
Cuối cùng, tôi đã cố gắng để làm tan chảy các dữ liệu và sau đó định hình lại sử dụng idvar="Name"
timevar="variable"
(trong đó tất cả chỉ là Mednam es), tuy nhiên điều này dường như không được xây dựng cho vấn đề của tôi vì nếu có nhiều kết quả phù hợp với idvar, việc định hình lại chỉ lấy MedName đầu tiên và bỏ qua phần còn lại.
Có ai biết cách thực hiện điều này bằng cách sử dụng chức năng định hình lại hoặc chức năng R khác không? Tôi nhận ra rằng có lẽ có một cách để làm điều này một cách lộn xộn hơn với một số vòng lặp và điều kiện để cơ bản chia và dán lại dữ liệu, nhưng tôi đã hy vọng có một giải pháp đơn giản hơn. Cảm ơn bạn rất nhiều!
Cảm ơn sự giúp đỡ, điều này đã hiệu quả. Tôi lo lắng về các cột, đó là trong tập dữ liệu thực tế của tôi, tôi có số lượng và tên thuốc thay đổi, vì vậy tuyên bố MedName = c (Tất cả tên) có thể hơi nhiều, nhưng tôi đánh giá cao sự trợ giúp và sẽ có thể sử dụng phương pháp này trên các vấn đề khác. – Hotamd6
@ Hotamd6 - không cần chỉ định thủ công tất cả các tên - bạn chỉ cần tìm và thay thế tên tập dữ liệu như 'gsub (" MedName. "," Medicine ", tên (reshapedtestdata), fixed = TRUE)' để nhận cùng một kết quả như @mnel ở trên. – thelatemail