একটি ডেটা ফ্রেম স্থানান্তর করুন


107

আমাকে একটি বড় ডেটা ফ্রেম স্থানান্তর করতে হবে এবং তাই আমি ব্যবহার করেছি:

df.aree <- t(df.aree)
df.aree <- as.data.frame(df.aree)

এটি আমি পেয়েছি:

df.aree[c(1:5),c(1:5)]
                         10428        10760        12148        11865
    name                M231T3       M961T5       M960T6      M231T19
    GS04.A        5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04
    GS16.A        5.248690e+04 4.047780e+03 3.763850e+04 1.187454e+04
    GS20.A        5.370910e+03 9.518396e+03 3.552036e+04 1.497956e+04
    GS40.A        3.640794e+03 1.084391e+04 4.651735e+04 4.120606e+04    

আমার সমস্যাটি হ'ল নতুন কলামের নামগুলি (10428, 10760, 12148, 11865) যেটি আমি মুছে ফেলা দরকার কারণ আমার প্রথম সারিতে কলামের নাম হিসাবে ব্যবহার করা দরকার।

আমি col.names()ফাংশন দিয়ে চেষ্টা করেছি কিন্তু আমার যা প্রয়োজন তা আমি পাই নি।

তোমার কি কোন পরামর্শ আছে?

সম্পাদনা

আপনার পরামর্শের জন্য ধন্যবাদ!!! এটি ব্যবহার করে আমি প্রাপ্ত:

df.aree[c(1:5),c(1:5)]
                        M231T3       M961T5       M960T6      M231T19
    GS04.A        5.847557e+03 0.000000e+00 3.165891e+04 2.119232e+04
    GS16.A        5.248690e+04 4.047780e+03 3.763850e+04 1.187454e+04
    GS20.A        5.370910e+03 9.518396e+03 3.552036e+04 1.497956e+04
    GS40.A        3.640794e+03 1.084391e+04 4.651735e+04 4.120606e+04
    GS44.A        1.225938e+04 2.681887e+03 1.154924e+04 4.202394e+04

এখন আমার একটি ফ্যাক্টর কলামে সারির নামগুলি (জিএস ..) রূপান্তর করা দরকার ....


1
আপনি চেষ্টা করেছেন colnames(df.aree)<-df.aree[1,];df.aree<-df.aree[2:nrow(df.aree),]?

5
ডেটা ফ্রেমগুলি প্রাকৃতিকভাবে স্থানান্তরযোগ্য নয় able যদি আপনার হয়, তবে সম্ভবত এটি পরিবর্তে ম্যাট্রিক্স ফর্মের মধ্যে থাকা উচিত।
রিচি কটন

একমত; tআইএনএন ডেটা ফ্রেমও বেশ অদক্ষ। আপনি যদি পারেন তবে ম্যাট্রিক্স ব্যবহার করুন।
এমবিকিউ

5
এতে একটি স্ট্রিং কলাম থাকা একটি ডেটা ফ্রেম ট্রান্সপোজ করা সমস্ত মানকে স্ট্রিংয়ে রূপান্তরিত করে! ভাল না. আমার উত্তর নীচে একটি কাজের জন্য দেখুন।
টমি

উত্তর:


109

নাম কলামটি থাকা অবস্থায় আপনি ডেটা ফ্রেমটি স্থানান্তর না করাই ভাল - সমস্ত সংখ্যার মানগুলি তখন স্ট্রিংয়ে রূপান্তরিত হবে!

এখানে একটি সমাধান যা সংখ্যা হিসাবে সংখ্যা রাখে:

# first remember the names
n <- df.aree$name

# transpose all but the first column (name)
df.aree <- as.data.frame(t(df.aree[,-1]))
colnames(df.aree) <- n
df.aree$myfactor <- factor(row.names(df.aree))

str(df.aree) # Check the column types

49
df.aree <- as.data.frame(t(df.aree))
colnames(df.aree) <- df.aree[1, ]
df.aree <- df.aree[-1, ]
df.aree$myfactor <- factor(row.names(df.aree))

@ রিকার্ডো যদি তাই হয় তবে তার উত্তরটি তার পাশের ধূসর রঙের টিক ক্লিক করে গ্রহণ করুন।
এমবিকিউ

4
এটির সাথে একটি সমস্যা - কলামের নামগুলি ফ্যাক্টর স্তরের সংখ্যার উপস্থাপনা নেয়।
হ্যারি পামার

48

আপনি লাইব্রেরি transposeথেকে ফাংশনটি ব্যবহার করতে পারেন data.table। সহজ এবং দ্রুত সমাধান যা numericমানগুলিকে রাখে numeric

library(data.table)

# get data
  data("mtcars")

# transpose
  t_mtcars <- transpose(mtcars)

# get row and colnames in order
  colnames(t_mtcars) <- rownames(mtcars)
  rownames(t_mtcars) <- colnames(mtcars)

4
এছাড়াও, setnames(t_mtcars, rownames(mtcars))হবে data.tableএকটি data.table উপর নাম সেটিং (এবং ব্যবহার করা হয় তবে এর -way data.tableবস্তুর সেট না rownames)
SymbolixAU

এটি এখন পর্যন্ত সেরা সমাধান! +1 টি।
হ্যালো ওয়ার্ল্ড

1

এর সুবিধা নিন as.matrix:

# keep the first column 
names <-  df.aree[,1]

# Transpose everything other than the first column
df.aree.T <- as.data.frame(as.matrix(t(df.aree[,-1])))

# Assign first column as the column names of the transposed dataframe
colnames(df.aree.T) <- names
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.