我有一个很大data.frame的'交错'数据,并希望对齐它.我的意思是我想采取类似的东西
并从所有列中删除前导(顶部)NA以获取
我知道包中的na.trim函数zoo,但是这不适用于data.frame上面提到的初始函数或它的转置.为此,我使用了转置数据帧t.df,
t.df <- na.trim(t.df, sides = 'left')
Run Code Online (Sandbox Code Playgroud)
这只返回一个空的data.frame,并且不会以我想要的方式工作,因为它会创建不同长度的向量.任何人都可以指向一个可能更有帮助的包或功能吗?
以下是我上面使用的示例的代码:
# example of what I have
var1 <- c(1,2,3,4,5,6,7,8,9,10)
var2 <- c(6,2,4,7,3,NA,NA,NA,NA,NA)
var3 <- c(NA,NA,8,6,3,7,NA,NA,NA,NA)
var4 <- c(NA,NA,NA,NA,5,NA,2,6,2,9)
df <- data.frame(var1, var2, var3, var4)
# transpose and (unsuccessful) attempt to remove leading NAs
t.df <- t(df)
t.df <- na.trim(t.df, sides = 'left')
Run Code Online (Sandbox Code Playgroud) 我正在尝试绘制 Likert 类型的数据,并使用改编自该网站的代码:https://scisley.github.io/articles/ggplot-likert-plot/
重现该示例的代码:
# load packages
library(dplyr)
library(ggplot2)
library(knitr)
library(tidyr)
library(scales)
# Simulation N responses
N <- 50
answers <- c("Strongly Disagree","Somewhat Disagree","Neither Agree nor Disagree",
"Somewhat Agree", "Strongly Agree")
set.seed(12342)
d <- tibble(
id = paste0("Respondent", 1:N),
Q1 = sample(answers, N, replace=TRUE),
Q2 = sample(answers, N, replace=TRUE),
Q3 = sample(answers, N, replace=TRUE),
Q4 = sample(answers, N, replace=TRUE),
Q5 = sample(answers, N, replace=TRUE)
)
# reduce data
d.reduced <- d %>%
select(-id) %>%
gather("Q", "ans") %>%
group_by(Q, ans) …Run Code Online (Sandbox Code Playgroud)