R中新行的所有其他因子

时间:2014-02-10 23:43:34

标签: r formatting format dataframe string-formatting

我有一个快速重新格式化的问题。我有一个约5000个因子的数据框,其名称和数字如下:

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

我想把它变成这样:

>df
1    Puppy    364547
2    Kitty    775833
3    Bunny    775984

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

3 个答案:

答案 0 :(得分:3)

这是:

创建数据框:

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

选择你想要的东西(更好地解释,对于第一列,我们只获得“first”元素,所以我们得到TRUE,FALSE;而对于第二列,我们只得到“second”元素,所以我们得到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

答案 1 :(得分:2)

我想到的最直接的事情是使用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

答案 2 :(得分:1)

这有效,但肯定效率不高:

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)