我有一个数据框A,其标题描述了个人的素质。这些品质中的每一个都有两部分,第一部分有3个可能的答案,第二部分有两个可能的答案。如果个人不具备该质量,则每列具有0,如果他们具有1,则每列具有0,在质量类别(3和2个答案的组)中,在一列中仅存在1个值。框架的前三列包含个人姓名及其坐标。
我想创建数据框,其中包含所有人的前三列,每列中的质量为1。即。他们是否回答了1,2或3关于质量的第一个问题。框架将具有列标题的名称。
目前我有
Aa <- qualities[qualities$Aa != 0,]
Ab <- qualities[qualities$Ab != 0,]
...
Ae <- qualities[qualities$Ae != 0,]
Ba <- qualities[qualities$Ba != 0,]
...
Ze <- qualities[qualities$Ze != 0,]
显然,这是一种愚蠢的做法。我需要对所有列i,i = {质量列数}的东西,将列的功能写入新数据帧。我认为。我不知道怎么做,虽然我似乎无法找到一种方法来调用列i然后将其写入i的标题,因为它是所有文本。
提前致谢!
答案 0 :(得分:-1)
您可以将数据框放在列表中:
n <- names(qualities)[..] # [number of column "Aa" : number of column "Ze"]
dat.q <- function(q) qualities[qualities[,q]!=0,]
L <- lapply(n, dat.q)
names(L) <- n