मैं जानना चाहता हूं कि क्या कोई फ़ंक्शन या कोड है जो डेटाफ़्रेम डेटा को कॉलम में बदलता है।

यह मेरा मेकिंग डेटा फ्रेम है।

number <- c("no.1","no.2","no.3","no.4","no.5","no.6","no.7","no.8","no.9","no.10")

tp1 <- c("car","car","bicycle","car","walk","walk","bus","subway","subway","subway")

tp2 <- c("bicycle",NA,"bus",NA,"subway",NA,"walk",NA,NA,NA)

tp3 <- c("walk",NA,"subway",NA,NA,"bus",NA,NA,NA,NA)

tp4 <- c("bus","walk",NA,NA,NA,NA,NA,NA,NA,NA)

tp5 <- c("subway",NA,NA,NA,NA,NA,NA,NA,NA,NA)

transport <- data.frame(number,tp1,tp2,tp3,tp4,tp5)

और मैं स्क्रीनशॉट में दिखाए गए अनुसार नया डेटाफ्रेम बनाना चाहता हूं।

कृपया मुझे कुछ सुझाव दें :)

i want to make dataframe like this

0
plusICON 19 जून 2020, 15:34
with(cbind(transport[1], stack(lapply(transport[-1], as.character))), table(number, values)).
 – 
A5C1D2H2I1M1N2O1R2T1
20 जून 2020, 09:34

2 जवाब

आप डेटा को लंबे प्रारूप में प्राप्त कर सकते हैं, एक डमी कॉलम बना सकते हैं और इसे विस्तृत प्रारूप में वापस प्राप्त कर सकते हैं।

library(dplyr)
library(tidyr)

transport %>%
  pivot_longer(cols = -number, values_drop_na = TRUE) %>%
  mutate(n = 'yes') %>%
  select(-name) %>%
  pivot_wider(names_from = value, values_from = n, names_prefix = 'use_')


#  number use_car use_bicycle use_walk use_bus use_subway
#   <chr>  <chr>   <chr>       <chr>    <chr>   <chr>     
# 1 no.1   yes     yes         yes      yes     yes       
# 2 no.2   yes     NA          yes      NA      NA        
# 3 no.3   NA      yes         NA       yes     yes       
# 4 no.4   yes     NA          NA       NA      NA        
# 5 no.5   NA      NA          yes      NA      yes       
# 6 no.6   NA      NA          yes      yes     NA        
# 7 no.7   NA      NA          yes      yes     NA        
# 8 no.8   NA      NA          NA       NA      yes       
# 9 no.9   NA      NA          NA       NA      yes       
#10 no.10  NA      NA          NA       NA      yes    
0
Ronak Shah 19 जून 2020, 15:39
सलाह के लिए धन्यवाद :) यह उदाहरण डेटा था ... मैं वास्तविक डेटा में आवेदन करना चाहता हूं लेकिन त्रुटि है: मान विशिष्ट रूप से पहचाने नहीं जाते हैं; आउटपुट में सूची-कॉल्स होंगे। * इस चेतावनी को दबाने के लिए values_fn = list का प्रयोग करें। * यह पहचानने के लिए values_fn = length का उपयोग करें कि डुप्लिकेट कहां से आए हैं * डुप्लिकेट को सारांशित करने के लिए values_fn = {summary_fun} का उपयोग करें मैं इसे कैसे हल कर सकता हूं???
 – 
plusICON
19 जून 2020, 16:25
आपको उदाहरण डेटा प्रदान करना चाहिए जो वास्तविक डेटा के समान हो ताकि हम आपके जैसे डेटा पर काम कर सकें। यहां कुछ चीजें दी गई हैं जो आप कर सकते हैं: 1) डेटा में केवल आवश्यक कॉलम रखें और उन कॉलम को हटा दें जिनकी आवश्यकता नहीं है select (उत्तर में select(-name) के समान)। यदि त्रुटि अभी भी बनी रहती है, तो group_by(name) %>% mutate(row = row_number()) करके एक अद्वितीय कॉलम बनाने का प्रयास करें। यहाँ एक संदर्भ पोस्ट है stackoverflow.com/questions/58837773/…
 – 
Ronak Shah
19 जून 2020, 16:37