2014-05-07 18 views
28

पर एक अनुक्रमणिका (संख्यात्मक आईडी) कॉलम जोड़ें, मेरे पास डेटा फ्रेम में बड़ी सीएसवी फ़ाइल पढ़ी गई है। सीएसवी फ़ाइल में डेटा उपयोगकर्ता की जानकारी का प्रतिनिधित्व करने वाली कई वेबसाइटों से हैं। उदाहरण के लिए यहां डेटा फ्रेम की संरचना है।बड़े डेटा फ्रेम

user_id, number_of_logins, number_of_images, web 
001, 34, 3, aa.com 
002, 4, 4, aa.com 
034, 3, 3, aa.com 
001, 12, 4, bb.com 
002, 1, 3, bb.com 
034, 2, 2, cc.com 

के रूप में आप एक बार मैं डेटा फ्रेम user_id में डेटा लाने देख सकते हैं नहीं रह गया है की एक विशेष आईडी है और यह सब विश्लेषण का कारण बनता है। मैं user_id से पहले एक और कॉलम जोड़ने की कोशिश कर रहा हूं जो "generated_uid" जैसा कुछ है और उस कॉलम से भरे जाने के लिए data.frame की अनुक्रमणिका का बहुत अधिक उपयोग करता है। इसे पूरा करने का सबसे अच्छा तरीका क्या है।

+3

बढ़ती संख्या के साथ नया कॉलम जोड़ने का एक आसान तरीका है: 'data.frame $ gener_uid <- 1: nrow (data.frame)' –

उत्तर

69

आप

data$ID <- seq.int(nrow(data)) 

बेशक साथ बहुत आसानी से संख्या का एक अनुक्रम में जोड़ सकते हैं यह कोई असली अर्थ होगा तो यह विश्लेषण में उपयोग की नहीं हो सकता है।

आप पहले से ही library(tidyverse) का उपयोग कर रहे हैं, तो आप उपयोग कर सकते हैं

data <- tibble::rowid_to_column(data, "ID") 
5

ठीक है, अगर मैं तुम्हें सही ढंग से समझ। आप निम्न की तरह कुछ कर सकते हैं।

यह दिखाने के लिए, मैं पहली बार एक data.frame अपने उदाहरण के साथ बनाने के

df <- 
scan(what = character(), sep = ",", text = 
"001, 34, 3, aa.com 
002, 4, 4, aa.com 
034, 3, 3, aa.com 
001, 12, 4, bb.com 
002, 1, 3, bb.com 
034, 2, 2, cc.com") 

df <- as.data.frame(matrix(df, 6, 4, byrow = TRUE)) 
colnames(df) <- c("user_id", "number_of_logins", "number_of_images", "web") 

फिर आप के रूप में पंक्ति संख्या सबसे (data.frame के अंत में) एक स्तंभ जोड़ने के लिए निम्नलिखित लाइनों में से एक चला सकते हैं उत्पन्न उपयोगकर्ता आईडी। दूसरी पंक्तियां केवल प्रमुख शून्य जोड़ती हैं।

df$generated_uid <- 1:nrow(df) 
df$generated_uid2 <- sprintf("%03d", 1:nrow(df)) 

आप पूरी तरह उत्पन्न प्रयोक्ता आईडी प्रथम स्तंभ होना चाहते हैं, तो आप ऐसा तरह स्तंभ जोड़ सकते हैं:

df <- cbind("generated_uid3" = sprintf("%03d", 1:nrow(df)), df) 

या बस कॉलम rearrage।