如何在R數據框中添加列?我想查看是否有名爲「LastName」的列,然後將其添加爲第三列(如果它尚不存在)。是否存在列以及如何重新排列R數據框中的列
22
A
回答
17
1)存在測試:在名稱中使用%,例如%。
> example(data.frame) # to get 'd'
> "fac" %in% colnames(d)
[1] TRUE
> "bar" %in% colnames(d)
[1] FALSE
2)實際上需要創建一個從舊,新列上半年新data.frame,以及下半年:
> bar <- data.frame(d[1:3,1:2], LastName=c("Flim", "Flom", "Flam"), fac=d[1:3,3])
> bar
x y LastName fac
1 1 1 Flim C
2 1 2 Flom A
3 1 3 Flam A
>
1
或使用cbind:
> example(data.frame) # to get 'd'
> bar <- cbind(d[1:3,1:2],LastName=c("Flim", "Flom", "Flam"),fac=d[1:3,3])
> bar
x y LastName fac
1 1 1 Flim A
2 1 2 Flom B
3 1 3 Flam B
23
一種方法是將列添加到數據框的末尾,然後使用子集將其移動到所需的位置:
d$LastName <- c("Flim", "Flom", "Flam")
bar <- d[c("x", "y", "Lastname", "fac")]
+0
好的!沒有看到那個伎倆。你也可以直接重新分配給它。 – 2009-07-26 15:42:53
2
在我寫的許多愚蠢的小幫助函數中,每次載入R時都會使用它。它只是列名稱和索引,但我經常使用它。
##creates an object from a data.frame listing the column names and location
namesind=function(df){
temp1=names(df)
temp2=seq(1,length(temp1))
temp3=data.frame(temp1,temp2)
names(temp3)=c("VAR","COL")
return(temp3)
rm(temp1,temp2,temp3)
}
ni <- namesind
使用ni查看您的列號。 (ni只是namesind的一個別名,我從來不使用namesind,但最初認爲它是一個更好的名字)然後,如果你想插入你的列在說,位置12,你的data.frame被命名爲bob 20列,它將是。
bob2 < - data.frame(BOB [,1:11],newcolumn,鮑勃[12:20]
雖然我喜歡該加載在結束和從哈德利以及重新排列答案
1
我一直認爲像append()[雖然不幸的名字是]應該是一個通用函數
## redefine append() as generic function
append.default <- append
append <- `body<-`(args(append),value=quote(UseMethod("append")))
append.data.frame <- function(x,values,after=length(x))
`row.names<-`(data.frame(append.default(x,values,after)),
row.names(x))
## apply the function
d <- (if(!"LastName" %in% names(d))
append(d,values=list(LastName=c("Flim","Flom","Flam")),after=2) else d)
2
Dirk Eddelbuettel的答案有效,但您不需要指定行號或在姓氏列中指定條目。此代碼應做到名爲df
數據幀:
if(!("LastName" %in% names(df))){
df <- cbind(df[1:2],LastName=NA,df[3:length(df)])
}
(這個默認LastName
到NA
,但你可以很容易地使用「LastName='Smith'
」)
相關問題
- 1. 在rbind(R)之前重新排列數據框的列表
- 2. 重新排列r中的數據幀
- 3. 如何重新排列數據框,以便一列中的值是行名稱?
- 4. 重新排列數據框?
- 5. 在R中重新排序數據框中的列?
- 6. Python Pandas - 根據列名重新排列數據框中的列
- 7. 重新排列中的R
- 8. 重新排列中的R
- 9. 重新排列R中的數據幀中的列
- 10. 重新排序數據框中列
- 11. 重新排列和r中
- 12. R按子列排列數據框
- 13. 如何重新排序列在qplot(R)
- 14. 重新排列的數字列表框
- 15. 是否可以重新排列列表視圖中的項目?
- 16. 根據列重新排列數據幀的列意思是
- 17. 如何重新排列列
- 18. 在遷移時是否可以重新排列列?
- 19. 重新排列在數據幀中的變量中的R
- 20. R重新排列主體內的數據框
- 21. 如何創建新列以存儲重複ID列的數據?
- 22. [R重新排列數據幀:一些行的列
- 23. 重新排列數據幀的列
- 24. 重新排列列的行數據
- 25. 如何重新排列R中的行和列
- 26. 重新排列Array中的字母並檢查排列是否在數組中
- 27. 如何重新排列DataGridView中的列?
- 28. 如何動態地重新排列數據網格中的列?
- 29. 偏移列而重新排序r列
- 30. 如何重新排列數據?
我建議你不要使用cbind作爲語義是相當複雜的:根據輸入你可能會得到一個矩陣或數據。框架 – hadley 2009-07-26 14:06:16