我在R中有一个data.frame(让我们以内置数据集“ mtcars”为例),我想找到一种更有效的方法来创建第二个data.frame,其中包含每个变量的说明(即一些基本的元数据),方法如下:
Variables Type Labels
mpg numeric Miles/(US) gallon
cyl numeric Number of cylinders
disp numeric Displacement (cu.in.)
hp numeric Gross horsepower
drat numeric Rear axle ratio
wt numeric Weight (1000 lbs)
qsec numeric 1/4 mile time
vs numeric Engine (0 = V-shaped, 1 = straight)
am numeric Transmission (0 = automatic, 1 = manual)
gear numeric Number of forward gears
carb numeric Number of carburetors
下面的代码表示我当前用于获取data.frame的方法,该方法带有每个变量的描述,包括变量名称,变量元素类型和标签。
dat01 <- mtcars
Variables <- c(names(dat01))
#install.packages("Hmisc")
library(Hmisc)
var.labels = c(mpg="Miles/(US) gallon",
cyl="Number of cylinders",
disp="Displacement (cu.in.)",
hp="Gross horsepower",
drat="Rear axle ratio",
wt="Weight (1000 lbs)",
qsec="1/4 mile time",
vs="Engine (0 = V-shaped, 1 = straight)",
am="Transmission (0 = automatic, 1 = manual)",
gear="Number of forward gears",
carb="Number of carburetors")
label(dat01) <- as.list(var.labels[match(names(dat01), names(var.labels))])
Labels <- label(dat01)
Type <- c(mode(dat01$mpg),
mode(dat01$cyl),
mode(dat01$disp),
mode(dat01$hp),
mode(dat01$drat),
mode(dat01$wt),
mode(dat01$qsec),
mode(dat01$vs),
mode(dat01$am),
mode(dat01$gear),
mode(dat01$carb))
meta.df <- data.frame(Variables,
Type,
Labels)
print(meta.df, row.names = FALSE)
除了提高脚本的效率(特别是,我相信可以使用更有效的代码来创建矢量“ Type”)之外,我还想听听您对如何最佳概括的建议此脚本,以便可以将其复制/粘贴并应用于结构类似的data.frames。
答案 0 :(得分:0)
第一个解决方法是删除该Type
定义的重复数据:
由于class(some_vector)
返回一个描述该向量中数据类型的字符串,并且由于数据帧是向量列表,因此您可以使用如下代码:
Type <- unlist(Map(class, mtcars))
[您可能需要重新排序条目]