/ / टेक्स्ट फ़ाइल को कैसे फिर से खोलें? - आर, डेटाफ्रेम, रिशेप

टेक्स्ट फ़ाइल को दोबारा कैसे बदलें? - आर, डेटाफ्रेम, reshape

मेरे पास इस तरह की फाइल है जिसे मैं कॉलम में बदलना और बदलना चाहता हूं:

   fe=read.table("foo.txt")
> fe
V1
1         9
2        Sd
3          2
4       Sd
5          5
6       Smn
7          7
8        Smn
9          5
10      bf
11         4
12      bf

> str(fe)
"data.frame":   12 obs. of  1 variable:
$ V1: Factor

वांछित आउटपुट:

 Sd 9 2
Smn 5 7
bf 5 4

उत्तर:

जवाब के लिए 3 № 1

एक अन्य विकल्प:

# step 1: create new dataframe
fe2 <- data.frame(id = fe$V1[c(FALSE,TRUE)],
num = as.numeric(as.character(fe$V1[c(TRUE,FALSE)])))

# step 2: reshape into the desired format
fe2$rid <- with(fe2, ave(as.character(id), id, FUN = seq_along))
reshape(fe2, idvar = "id", timevar = "rid", direction = "wide")

जो एक डेटा देता है।

   id num.1 num.2
1  Sd     9     2
3 Smn     5     7
5  bf     5     4

चरण 2 के विकल्प के रूप में, आप भी उपयोग कर सकते हैं data.table-package:

# step 2 (alternative): reshape into the desired format
library(data.table) # v1.9.8 or higher is required for the "rowid"-function
dcast(setDT(fe2), id ~ rowid(id, prefix = "num."), value.var = "num")

यह एक वापस आ जाएगा विवरण सारणी (जो एक बढ़ाया है डेटा ढांचा) आधार आर समाधान के समान संरचना के साथ।


जवाब के लिए 2 № 2

हम कॉलम "V1" को एक में परिवर्तित करके पुनः आकार देते हैं matrix और फिर करने के लिए data.frame, फिर unstack और अपेक्षित उत्पादन प्राप्त करने के लिए संक्रमण

d1 <- as.data.frame(matrix(fe$V1, ncol=2, byrow = TRUE))
d1$V1 <- as.integer(as.character(d1$V1))
res <- t(unstack(d1, V1~V2))
res
#    [,1] [,2]
#bf     5    4
#Sd     9    2
#Smn    5    7