簡體   English   中英

無法將列名稱設置為數據幀的子集

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

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