我对软件包天堂的write_dta函数有问题。
我的代码是这样的:
lab_attr <- label$lab
attr(data, "label") <- lab_attr
attributes(data)
write_dta(data,"donnees/test_haven_1_data.dta", label = attr(data, "label"))这给了我以下错误:
Error in validate_dta_label(label) : length(label) == 1 is not TRUE我所有的标签都在80个字符以下。
有谁知道怎么解决这个问题吗?
谢谢!
祝您今天愉快,
卡桑德拉
发布于 2022-09-21 11:09:52
将Stata变量标签存储为数据帧属性的方法是分配给每个列的属性,而不是数据帧的属性。
例如,使用iris数据:
data <- iris
names(data)
# "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"如果您只想编辑一个标签,您可以:
attr(data$Sepal.Length, "label") <- "new label"如果要创建标签来解释循环中的变量,则可以:
# Set labels which replace each . in the column name with a space
for(col in names(data)) {
attr(data[[col]], "label") <- gsub("\\.", " ", col)
}
# Print attributes
sapply(data, attr, "label")
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# "Sepal Length" "Sepal Width" "Petal Length" "Petal Width" "Species" 完成此操作后,不需要在label中设置write_dta()参数。它会自动将label属性写入Stata标签。所以,在你的情况下,你可以做:
write_dta(data,"donnees/test_haven_1_data.dta")https://stackoverflow.com/questions/73799309
复制相似问题