我从聚合函数创建了一个数据框。数据帧的长度为两个。但是,当我打印出数据框时,会出现5列。 R如何处理数据帧中的标头和子标头?如果是这种情况,我该如何摆脱头文件的第一级?
>names(df)
[1] "User id" "block"
> df
User id block.east block.north block.south block.west
1 1 0 1 1 0
2 2 1 0 0 0
3 3 0 0 0 1
这些是令我困惑的输出:
> names(df)
> "User id" "block.east" "block.north" "block.south" "block.west"
这就是我想要的:
{{1}}
答案 0 :(得分:0)
使用table
out <- as.data.frame.matrix(+(table(d) > 0))
names(df) <- paste0("block.", names(df))
关于OP输出中的问题,它是一个matrix
列,
str(df)
#'data.frame': 3 obs. of 2 variables:
# $ User id: num 1 2 3
# $ block : num [1:3, 1:4] 0 1 0 1 0 0 1 0 0 0 ...
# ..- attr(*, "dimnames")=List of 2
# .. ..$ : NULL
# .. ..$ : chr "east" "north" "south" "west"
因此我们可以使用
转换为常规data.framedf <- do.call(data.frame, df)
names(df)
#[1] "User.id" "block.east" "block.north" "block.south" "block.west"
str(df)
#'data.frame': 3 obs. of 5 variables:
# $ User.id : num 1 2 3
# $ block.east : num 0 1 0
# $ block.north: num 1 0 0
# $ block.south: num 1 0 0
# $ block.west : num 0 0 1