按顺序运行所有列的表
如果这是我的数据集,
Id Col_A_1 Col_A_2 Col_A_3 ..... Col_A_100
1 87 88 82 88
2 88 82 82 87
3 82 87 NA 82
4 88 87 82 88
5 87 87 87 88
则从col_a_1到col_a_100的这些列上执行表函数的有效方法是什么?我正在尝试避免运行表(df $ col_a_1,usena =“ ifany”)
,table(df $ col_a_2,usena =“ ifany”)
,... 。 100次。
另外,如果可能的话,我喜欢保存在数据框中的输出。
预期输出
Column 82 85 87 88 Missing
Col_A_1 1 0 2 2 0
Col_A_2 1 0 3 1 0
Col_A_3 3 0 1 0 1
.
.
.
Col_A_100 1 0 1 3 0
预先感谢。
# example data
d <- read.table(text = "
Id Col_A_1 Col_A_2 Col_A_3 Col_A_100
1 87 88 82 88
2 88 82 82 87
3 82 87 NA 82
4 88 87 82 88
5 87 87 87 88", header = TRUE)
If this is my dataset
Id Col_A_1 Col_A_2 Col_A_3 ..... Col_A_100
1 87 88 82 88
2 88 82 82 87
3 82 87 NA 82
4 88 87 82 88
5 87 87 87 88
What is the efficient way to execute table function on these columns from Col_A_1 to Col_A_100 ? I am trying to avoid running the table(df$Col_A_1 , useNA ="ifany")
, table(df$Col_A_2 , useNA ="ifany")
, .... table(df$Col_A_100 , useNA ="ifany")
100 times.
Also if possible, I like the output saved in a dataframe .
Expected output
Column 82 85 87 88 Missing
Col_A_1 1 0 2 2 0
Col_A_2 1 0 3 1 0
Col_A_3 3 0 1 0 1
.
.
.
Col_A_100 1 0 1 3 0
Thanks in advance.
# example data
d <- read.table(text = "
Id Col_A_1 Col_A_2 Col_A_3 Col_A_100
1 87 88 82 88
2 88 82 82 87
3 82 87 NA 82
4 88 87 82 88
5 87 87 87 88", header = TRUE)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 id id 使用 stack 从宽到长的重塑,然后 table 获得包括NAS,
t
的计数将列名称为行,然后将表对象转换为 dataframe :Excluding Id column reshape from wide-to-long using stack, then table to get counts including NAs,
t
ranspose to have column names as rows, then convert table object to dataframe:我刚刚创建了一个小标题来使用和说明它。
Tibbles 本质上可以被视为列表,因此 lapply 工作得很好。由于结果使用起来可能很麻烦,我将其作为列表条目放在小标题中:
编辑:我没有注意到输出格式要求。可以这样完成(可能有点不优雅):
I just created a small tibble to work with and to illustrate it with.
Tibbles can essentially be considered lists, so
lapply
works just fine. Since the result can be cumbersome to work with, I put it in a tibble as a list entry:EDIT: I did not notice the output format requirement. It can be done (perhaps a bit inelegantly) like this: