/ / कुशलता से डेटा फ्रेम के कॉलम के माध्यम से पुनरावृति कैसे करें? [डुप्लीकेट] - आर, डेटाफ्रेम, स्ट्रैस्प्लिट

डेटा फ्रेम के कॉलम के माध्यम से कुशलता से कैसे पुन: प्रयास करें? [डुप्लिकेट] - आर, डेटाफ्रेम, strsplit

इसलिए, data है एक डेटा फ्रेम कई कॉलम होते हैं, और जिनमें से एक कहा जाता है lpep_pickup_datetime दिनांक और समय "01/01/2016 12:39:36 AM" के प्रारूप में है

मैं दिनांक और समय के अनुसार इन आंकड़ों का विश्लेषण करना चाहता हूं, इसलिए मैं नाम से एक नया कॉलम बनाने का प्रयास कर रहा हूं pickup_date और एक नाम pickup_time AM या PM जानकारी के साथ।

मैंने स्ट्रिंग को निम्न रूप में विभाजित करने के लिए strsplit फ़ंक्शन का उपयोग किया है: c ("01/01/2016", "12:29:24", "AM"), और मैं इसमें से पूर्वोक्त कॉलम बनाने की कोशिश कर रहा हूं डेटा।

मैंने निम्नलिखित कोड लिखा है:

data$lpep_pickup_datetime=strsplit(data$lpep_pickup_datetime, " ")

data$pickup_date=data$lpep_pickup_datetime[[1]][1]


for (i in seq(1,90181))
{
data$pickup_time[i]=data$lpep_pickup_datetime[[i]][2]
}

यह गंभीरता अक्षम यह बहुत समय लगता है के रूप में डेटा की 90,181 पंक्तियों के माध्यम से पुनरावृति करने के लिए है। क्या इस कार्य को पूरा करने का एक बेहतर तरीका है?

धन्यवाद।

उत्तर:

उत्तर № 1 के लिए 1

?apply(df, 2, function(...) ) स्तंभों के माध्यम से पुनरावृत्ति का सामान्य तरीका है। लेकिन आपको यहाँ ऐसा करने की ज़रूरत नहीं है

> df<-data.frame("datetime" = format(seq(c(ISOdate(2000,3,20)), by = "day", length.out = 100000), "%Y-%m-%d %r"), stringsAsFactors=FALSE)
> str(df)
"data.frame":   100000 obs. of  1 variable:
$ datetime: chr  "2000-03-20 08:00:00 PM" "2000-03-21 08:00:00 PM" "2000-03-22 08:00:00 PM" "2000-03-23 08:00:00 PM" ...
> df$dateonly<-format(as.Date(df$datetime, format="%Y-%m-%d %r"),"%Y-%m-%d")
> head(df)
datetime   dateonly
1 2000-03-20 08:00:00 PM 2000-03-20
2 2000-03-21 08:00:00 PM 2000-03-21
3 2000-03-22 08:00:00 PM 2000-03-22
4 2000-03-23 08:00:00 PM 2000-03-23
5 2000-03-24 08:00:00 PM 2000-03-24
6 2000-03-25 08:00:00 PM 2000-03-25

उत्तर № 2 के लिए 1

में base R, हम प्रयोग कर सकते हैं sub एक सीमांकक बनाने के लिए और फिर साथ read.csv दो कॉलम बनाएं

data[paste0("pickup_", c("date", "time"))] <- read.csv(text=sub("\s+",
",", data$lpep_pickup_datetime),  header=FALSE, stringsAsFactors=FALSE)