首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R基础:同时处理多个变量及其输出

R基础:同时处理多个变量及其输出
EN

Stack Overflow用户
提问于 2021-11-29 10:18:20
回答 1查看 66关注 0票数 2

我有一个40个有序因子变量的调查数据集。当数据为imported.Please时,变量被转换为字符,如果我错了,请纠正我,因为我正在考虑在这里使用apply function

下面是我的数据操作:

代码语言:javascript
复制
### data    
v1 <- as.character(c(1,4,2,4,3,1,3,4,5,2,2,3,6,5,4,6,5,4,5,6,6,2,4,3,4,5,6,1,6,3,5,6,3,2,4,5,3,2,4,5,3,2,4))
v2 <- as.character(c(3,4,1,4,5,1,3,1,5,6,4,3,4,5,6,3,3,5,4,3,3,5,6,3,4,3,4,6,3,1,1,3,4,5,6,1,3,6,4,3,1,6,5))

df <- data.frame(v1,v2)

### transform into ordered factor

df$v1.f <- as.factor(df$v1)
df$v1.f <- ordered(df$v1.f, levels = c("1", "2", "3", "4", "5", "6"))

真正的级别是未排序的字符,这就是为什么我包括了这个步骤。我不介意为所有变量输入这个,但这似乎是多余的。

我的第二个问题是输出。我想要创建一个花哨的报告,并知道如何为它生成数字:

代码语言:javascript
复制
v1.freq <- table(df$v1.f)
v1.perc <- round(prop.table(v1.freq),2)*100
v1.med <- median(df$v1)

如何打印一个同时包含多个变量的所有变量的所有信息的表--特别是当一个级别没有答案时(参见v2,其中没有level 2的响应;table()只是跳过该级别)。

如何在一个级别为头,频率和百分比为多个变量行的表中转换R输出?

将数字复制/粘贴到Excel表格中似乎也是不必要的,而且容易出错。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-29 10:57:06

首先,您可能需要检查数据导入函数是否有stringAsFactor选项。

然后,正如我所理解的,你想把你的变量转换成有序的因素,这对所有的因素都是这样。您可以将其包装成dplyr语句,并使用forcats处理因素。让我们拿出你的数据:

代码语言:javascript
复制
library(tidyverse)
df %>% 
  mutate(across(1:2, ~factor(.))) %>% 
  mutate(across(1:2,~ordered(.))) %>% 
  str()

输出:

代码语言:javascript
复制
'data.frame':   43 obs. of  2 variables:
 $ v1: Ord.factor w/ 6 levels "1"<"2"<"3"<"4"<..: 1 4 2 4 3 1 3 4 5 2 ...
 $ v2: Ord.factor w/ 5 levels "1"<"3"<"4"<"5"<..: 2 3 1 3 4 1 2 1 4 5 ...

正如您所看到的,变量被转换为有序的因素,并按字母顺序排列级别。要解释,mutate需要更改变量,across指定要更改哪些变量,以及如何更改。在这里,我们希望将变量1突变为2,并向它们应用factorordered函数。如果字母级别不是所需要的,您仍然可以通过它自己对列进行变异,并给出levels参数。

对于第二个问题,由于V2没有级别"2“,与V1不同,您不能合并这两个变量,除非您为V2添加了一个带有NA的级别。您仍然可以检查janitor::tabyl以给出交叉频率,并为每个变量创建一个表:

代码语言:javascript
复制
library(janitor)
df2 <- df %>% 
  mutate(across(1:2, ~factor(.))) %>% 
  mutate(across(1:2,~ordered(.)))

map(df2, tabyl)

输出:

代码语言:javascript
复制
$v1
 .x[[i]]  n    percent
       1  3 0.06976744
       2  7 0.16279070
       3  8 0.18604651
       4 10 0.23255814
       5  8 0.18604651
       6  7 0.16279070

$v2
 .x[[i]]  n   percent
       1  7 0.1627907
       3 13 0.3023256
       4  9 0.2093023
       5  7 0.1627907
       6  7 0.1627907
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70152969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档