Tôi đang gặp khó khăn với các nhãn biến của cột data.frame. Nói rằng tôi có một khung dữ liệu như thế này (một phần của khung dữ liệu lớn hơn nhiều):R: Chỉ định các nhãn biến của cột khung dữ liệu
data <- data.frame(age = c(21, 30, 25, 41, 29, 33), sex = factor(c(1, 2, 1, 2, 1, 2), labels = c("Female", "Male")))
Tôi cũng có một vector được đặt tên với các nhãn biến cho dữ liệu này:
var.labels <- c(age = "Age in Years", sex = "Sex of the participant")
Những gì tôi muốn làm là gán các nhãn biến trong var.labels
cho các cột trong khung dữ liệu data
bằng cách sử dụng hàm label
từ gói Hmisc
. Tôi có thể làm từng cái một như thế này và kiểm tra kết quả sau:
> label(data[["age"]]) <- "Age in years"
> label(data[["sex"]]) <- "Sex of the participant"
> label(data)
age sex
"Age in years" "Sex of the participant"
Các nhãn biến được phân công như là thuộc tính của các cột:
> attr(data[["age"]], "label")
[1] "Age in years"
> attr(data[["sex"]], "label")
[1] "Sex of the participant"
tuyệt vời. Tuy nhiên, với khung dữ liệu lớn hơn, hãy nói 100 cột trở lên, điều này sẽ không thuận tiện hoặc hiệu quả. Một điều tôi có thể dễ dàng làm là chỉ định chúng trực tiếp với các thuộc tính:
> attr(data, "variable.labels") <- var.labels
Không được trợ giúp. Các nhãn biến không được gán vào các cột:
> label(data)
age sex
"" ""
Thay vào đó, họ được giao nhiệm vụ như một thuộc tính của khung dữ liệu riêng của mình (xem phần cuối cùng của danh sách):
> attributes(data)
$names
[1] "age" "sex"
$row.names
[1] 1 2 3 4 5 6
$class
[1] "data.frame"
$variable.labels
age sex
"Age in Years" "Sex of the participant"
Và đây là không phải những gì tôi muốn. Tôi cần các nhãn biến làm thuộc tính của các cột. Tôi cố gắng để viết hàm sau (và nhiều người khác):
set.var.labels <- function(dataframe, label.vector){
column.names <- names(dataframe)
dataframe <- mapply(label, column.names, label.vector)
return(dataframe)
}
Và hơn thực hiện nó:
> set.var.labels(data, var.labels)
Không giúp đỡ. Nó trả về các giá trị của vector var.labels
, nhưng không gán các nhãn biến. Nếu tôi cố gắng gán nó cho một đối tượng mới, nó chỉ chứa các giá trị của các nhãn biến là một vectơ.
@ eipi10: Cảm ơn bạn rất nhiều! Nó hoạt động! Đây chính xác là những gì tôi cần. Tôi gặp vấn đề khi hiểu về lập chỉ mục khi làm việc với họ của các hàm 'apply'. Có hướng dẫn nào tôi có thể đọc được hay đó là vấn đề kinh nghiệm? – panman
Để biết các hướng dẫn ngắn gọn về 'lapply', [this] (http://rollingyours.wordpress.com/category/r-programming-apply-lapply-tapply/) và [this] (https://nsaunders.wordpress.com/2010/08/20/a-brief-introduction-to-apply-in-r /) có thể hữu ích. Tôi cũng đã thêm một số giải thích thêm cho câu trả lời của tôi. – eipi10