在包中使用join函数时dplyr,我收到此警告:
Warning message:
In left_join_impl(x, y, by$x, by$y) :
joining factors with different levels, coercing to character vector
Run Code Online (Sandbox Code Playgroud)
网上没有很多关于此的信息.知道它可能是什么?谢谢!
我正在努力使用data.frame列的变量标签.假设我有以下数据框(更大的数据框的一部分):
data <- data.frame(age = c(21, 30, 25, 41, 29, 33), sex = factor(c(1, 2, 1, 2, 1, 2), labels = c("Female", "Male")))
#
Run Code Online (Sandbox Code Playgroud)
我还有一个带有该数据框变量标签的命名向量:
var.labels <- c(age = "Age in Years", sex = "Sex of the participant")
Run Code Online (Sandbox Code Playgroud)
我想在分配变量标签var.labels在数据帧中的列data使用功能label从Hmisc包.我可以像这样一个接一个地做,然后检查结果:
> label(data[["age"]]) <- "Age in years"
> label(data[["sex"]]) <- "Sex of the participant"
> label(data)
age sex
"Age in years" "Sex of the participant"
Run Code Online (Sandbox Code Playgroud)
变量标签被指定为列的属性:
> attr(data[["age"]], "label")
[1] "Age in years"
> …Run Code Online (Sandbox Code Playgroud) 我有一个包含数据框的列表作为其在R中的元素.
例:
df1 <- data.frame("names"=c("John","Sam","Dave"),"age"=c(21,22,25))
df2 <- data.frame("names"=c("John","Sam"),"score"=c(22,25))
df3 <- data.frame("names"=c("John","Sam","Dave"),"country"=c("US","SA","NZ"))
mylist <- list(df1,df2,df3)
Run Code Online (Sandbox Code Playgroud)
是否可以在不使用循环的情况下将mylist的所有元素合并在一起?
我希望这个例子的输出是:
names age score country
1 John 21 22 US
2 Sam 22 25 SA
Run Code Online (Sandbox Code Playgroud)
此示例中的列表只有三个元素; 但是,我正在寻找一种可以处理任意数量元素的解决方案.
我正在使用该tm软件包使用以下代码清理一些数据:
mycorpus <- Corpus(VectorSource(x))
mycorpus <- tm_map(mycorpus, removePunctuation)
Run Code Online (Sandbox Code Playgroud)
然后,我想将语料库转换回数据框,以便导出包含数据帧原始格式的数据的文本文件.我尝试过以下方法:
dataframe <- as.data.frame(mycorpus)
Run Code Online (Sandbox Code Playgroud)
但是这会返回一个错误:
"as.data.frame.default中的错误.(mycorpus):无法将类"c(vcorpus,> corpus")强制转换为data.frame
如何将语料库转换为数据框?
例如,如果我想绘制点1-5的图并添加点5-9,则以下方法可行:
> plot(c(1,2,3,4,5), ylim=c(0,10))
> points(c(5,6,7,8,9))
Run Code Online (Sandbox Code Playgroud)
但是,如果我事先不知道要添加的点数是多少(它们可能是5-9,也可能是20-29),我不能预先设置ylim和xlim.我希望能够做类似以下的事情(这不起作用):
> plot(c(1,2,3,4,5))
> points(c(5,6,7,8,9), ylim=c(0,10))
Run Code Online (Sandbox Code Playgroud)
这样的事情可能吗?
当我遍历向量向量时,每个循环的结果是几个向量.我希望每个循环的结果都是一个向量.请参阅以下示例:
foo <- seq(from=1, to=5, by=1)
bar <- seq(from=6, to=10, by=1)
baz <- seq(from=11, to=15, by=1)
vects <- c(foo,bar,baz)
for(v in vects) {print(v)}
# [1] 1
# [1] 2
# [1] 3
# [1] 4
# [1] 5
# [1] 6
# [1] 7
# [1] 8
# [1] 9
# [1] 10
# [1] 11
# [1] 12
# [1] 13
# [1] 14
# [1] 15
Run Code Online (Sandbox Code Playgroud)
这是奇怪的,因为我预计给定它的三个向量(应该)给定向量迭代三次,c(foo,bar,baz).就像是:
# [1] 1 2 3 4 5
# [1] …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个简单的shiny应用程序,该应用程序基于输入创建数据表并使用输出线图ggplot2.我收到以下错误:
错误:ggplot2不知道如何处理类packageIQR的数据
在这个应用程序中,用户使用滑块来定义时间段或X的长度,以及通过定义起始值和X上的值的变化来定义值的变化.图是线性线.我是新手shiny,所以如果有更好的方法来设置这个,我也希望有关设置服务器代码的最佳方法的建议,但是现在我只是得到一个错误并且没有产生任何情节.
server.R
library(shiny)
library(ggplot2)
shinyServer(function(input, output){
reactive({
data <- data.table(months = seq(1, input$months, by = 1),
value = seq(input$startingValue,
input$startingValue + input$valueChange,
length.out = input$months))
})
output$yield <- renderPlot({
p <- ggplot(data(), aes(x=months, y=value, colour=value)) +geom_line()
print(p)
})
})
Run Code Online (Sandbox Code Playgroud) 以下代码是我的Shiny ui:
library(shiny)
shinyUI(fluidPage(
titlePanel("All Country Spend"),
sidebarLayout(
sidebarPanel( selectInput("split",
label = "Choose Fill For the Chart",
choices = c("Action.Obligation","Action_Absolute_Value"),
selected = "Action.Obligation"
)
),
mainPanel(plotOutput("SpendChart"))
)
))
Run Code Online (Sandbox Code Playgroud)
以下是服务器代码:
library(shiny)
library(ggplot2)
shinyServer(function(input, output) {
spend <- read.csv("data/Ctrdata.csv")
output$SpendChart <- renderPlot({
Country <- spend$Principal.Place.of.Performance.Country.Name
ggplot(spend, aes(x = Country, y = input$split)) + geom_bar(stat = "identity")
})
})
Run Code Online (Sandbox Code Playgroud)
每次运行它我都会收到以下错误:
"eval中的错误(expr,envir,enclos):找不到对象'input'"
我试图渲染一个简单的条形图,它将在每个国家/地区的合同支出的净值和绝对值之间切换,但它不会从selectInput框中识别出名为"拆分"的输入.
这是我的数据框的示例:
data.frame(Country = c("Turk", "Turk", "Saudi", "Saudi", "Ger", "Ger"),
Action.Obligation = c(120,-345,565,-454, 343,-565),
Action_Absolute_Value = c(120,345,565,454,343,565))
Run Code Online (Sandbox Code Playgroud) 我最近一直在使用tabR 中的包来构建频率表。使用tabfreq()或tabmulti()函数,默认输出不包括 NA 值。有谁知道在这些函数中包含 NA 值的命令?
我试图在R中复制我在Stata上创建的数据子集的时间序列散点图.散点图在x轴上具有时间变量'date'(mm/dd/yyyy),在y轴上具有整数变量'cost'(货币金额,以美元计).标记标签是分类变量,"公司名称".
实际的数据集非常大,但样本看起来如下(见下面的R代码),观察(即行)表示交易(第1列),后面跟着表明交易日期的变量(第2列),交易成本(第3列),以及启动交易的公司名称(第4列).
#Sample Data Frame (R Code)
transactionID <- c(1, 2, 3, 4)
date <- as.Date(c("2006-08-06", "2008-07-30", "2009-04-16", "2013-02-05"))
cost <- as.integer(c(1208, 23820, 402, 89943))
company <- c("ACo", "BInc", "CInd", "DOp")
thedata <- data.frame(transactionID, date, cost, company)
Run Code Online (Sandbox Code Playgroud)
我想要的散点图将在x轴上显示"日期",在y轴上显示"成本",将"公司"列为标记标签,并且还将具有3条各种格式的垂直线来表示重要事件.在Stata中生成这个的步骤是
显示mdy(9,10,2007)
显示mdy(1,28,2008)
display mdy(2,5,2013)
上面的三个显示命令返回值17419,1755,19394,这是Stata在内部读取那些日子的方式,以及嵌入在下面的代码中用于绘制散点图的图形.
如果成本<= 3000,图表twoway散布成本日期,mlabel(公司)xline(17419,lpatt(点)lwidth(厚)lcol(红色))xline(17559,lpatt(破折号)lwidth(medthick)lcol(蓝色))xline (19394,lpatt(实心)lwidth(thin)lcol(绿色))
当我试图在RI中复制它时遇到了以下问题
到目前为止,我已将以下代码拼凑在一起.我最初尝试使用基本R安装命令plot()和text(),但它似乎无法在基础R中完成.所以然后我尝试使用ggplot2包但仍然无法弄清楚像我可以在Stata:
library(ggplot2)
ggplot(thedata, aes(date, cost)) +
geom_text( label = thedata$company, color="blue", vjust = 0) +
geom_vline( xintercept = …Run Code Online (Sandbox Code Playgroud)