簡體   English   中英

行中到R中新列的所有其他因子

[英]Every other factor in row to new column in R

我有一個快速重新格式化的問題。 我有一個約5000個因數的數據框,其中包含名稱和數字,例如:

>df
1 Puppy
2 364547
3 Kitty
4 775833
5 Bunny
6 775984

我想將其轉換為如下形式:

>df
1    Puppy    364547
2    Kitty    775833
3    Bunny    775984

最有效的方法是什么? 謝謝!

這里是:

創建數據框:

df <- read.table(text=
"1 Puppy
2 364547
3 Kitty
4 775833
5 Bunny
6 775984")

選擇您想要的(解釋什么更好,對於第一列,我們只得到了“第一”的元素,因此我們有TRUE,FALSE;而對於第二列,我們得到的只是“老二”的元素,所以我們有FALSE,TRUE R回收需要照顧其余人。):

df2 <- data.frame(V1=df$V2[c(TRUE, FALSE)], V2=df$V2[c(FALSE, TRUE)])

這將為您提供:

df2
  V1     V2
1 Puppy 364547
2 Kitty 775833
3 Bunny 775984

對我而言,最直接的想法是使用matrix 使用@carloscinelli的樣本數據:

matrix(df$V2, ncol = 2, byrow = TRUE)
#      [,1]    [,2]    
# [1,] "Puppy" "364547"
# [2,] "Kitty" "775833"
# [3,] "Bunny" "775984"
data.frame(matrix(df$V2, ncol = 2, byrow = TRUE))
#      X1     X2
# 1 Puppy 364547
# 2 Kitty 775833
# 3 Bunny 775984

這可行,但肯定不是那么有效:

df<-c("Puppy",364547,"Kitty",775833,"Bunny",775984)

animals <- df[which(substr(df,1,1) %in% LETTERS)]
numbs <- df[which(substr(df,1,1) %in% seq(10,from=0))]

data.frame(animals,numbs)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM