[英]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.