0

Orange 是数据集包中默认安装的数据集,它是我拥有的最接近我的真实数据的数据集。我添加了一个带有空格的文本列,因为它表示我的真实数据中也有空格的列以及它需要作为子集的内容。而且我知道我可以复制并粘贴 dfsummary 和频率代码 13 次(我需要多少次),但我真的不想这样做。任何人都可以让它工作吗?我希望新的数据集是 Tree1、Tree2、Tree3、Tree4 和 Tree5,但是 paste() 函数不喜欢我写的内容,我想为每个子集获取一个 dfsummary 和 freqs(来自 summarytools)。

orange <- data.frame(Orange)

#Add a another variable to play with.
orange$row[orange$Tree==1] <- "Row 1"
orange$row[orange$Tree==2] <- "Row 2"
orange$row[orange$Tree==3] <- "Row 3"
orange$row[orange$Tree==4] <- "Row 4"
orange$row[orange$Tree==5] <- "Row 5"

#start macro
bytree <- defmacro(df, tree, row,
                     expr={

                       #subset for tree
                       paste(Tree,tree) <- subset(df, row==row)

                       #write out the dfsummary info
                       #Be sure to include the varnumbers=FALSE or you'll have the 1, 2, 3, on the left side.
                       dfSummary(paste(Tree,tree), style = "grid", plain.ascii = TRUE,
                                 varnumbers = FALSE, valid.col = FALSE, tmp.img.dir = "./img")

                       freq(paste(Tree,tree)[ ,c("age", "circumference")])

                     })


bytree(orange,1,"Row 1")
bytree(orange,2,"Row 2")
bytree(orange,3,"Row 3")
bytree(orange,4,"Row 4")
bytree(orange,5,"Row 5")
4

1 回答 1

0

不确定您是否找到了解决方案,但这里有一个供将来参考:

orange <- data.frame(Orange)

# For freq, we need to call it separately for the 2 variables
stby(data=orange$age, orange$Tree, freq)
stby(data=orange$circumference, orange$Tree, freq)

stby(data=orange, orange$Tree, dfSummary)
于 2020-01-18T04:58:57.153 回答