[英]Unable to set column names to a subset of a dataframe
我運行以下代碼, p
是加載的數據幀。
a <- sort(table(p$Title))
a1 <- as.data.frame(a)
tail(a1, 7)
a
Maths 732
Science 737
Physics 737
Chemistry 776
Social Science 905
null 57374
88117
我想對上面的數據幀結果進行一些操作。 我想在數據框中添加列名。 我嘗試了colnames功能。
colnames(a1) <- c("category", "count")
我得到以下錯誤:
Error in `colnames<-`(`*tmp*`, value = c("category", "count")) :
attempt to set 'colnames' on an object with less than two dimensions
請建議。
正如我在你的問題的評論中所說,類別是rownames。 一個可重復的例子:
# create dataframe p
x <- c("Maths","Science","Physics","Chemistry","Social Science","Languages","Economics","History")
set.seed(1)
p <- data.frame(title=sample(x, 100, replace=TRUE), y="some arbitrary value")
# create the data.frame as you did
a <- sort(table(p$title))
a1 <- as.data.frame(a)
結果數據幀:
> a1
a
Social Science 6
Maths 9
History 10
Science 11
Physics 12
Languages 15
Economics 17
Chemistry 20
查看數據幀a1
的維度,您會得到:
> dim(a1)
[1] 8 1
這意味着您的數據框有8行1列。 嘗試為a1
數據幀分配兩個列名將因此導致錯誤。
您可以通過兩種方式解決問題:
1 :僅使用colnames(a1) <- c("count")
指定1個列名colnames(a1) <- c("count")
2 :將rownames轉換為category列,然后分配列名:
a1$category <- row.names(a1)
colnames(a1) <- c("count","category")
結果數據幀:
> a1
count category
Social Science 6 Social Science
Maths 9 Maths
History 10 History
Science 11 Science
Physics 12 Physics
Languages 15 Languages
Economics 17 Economics
Chemistry 20 Chemistry
您可以使用rownames(a1) <- NULL
刪除rownames。 這給出了:
> a1
count category
1 6 Social Science
2 9 Maths
3 10 History
4 11 Science
5 12 Physics
6 15 Languages
7 17 Economics
8 20 Chemistry
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.