我今天早些时候发布了关于使用该predict功能时遇到的错误.我能够纠正错误,并认为我走在了正确的道路上.
我有一些观察(实际),我有一些我想要推断或预测的数据点.我曾经lm创建过一个模型,然后我尝试使用predict将作为预测输入的实际值.
这段代码都是从我之前的帖子中重复出来的,但这里是:
df <- read.table(text = '
Quarter Coupon Total
1 "Dec 06" 25027.072 132450574
2 "Dec 07" 76386.820 194154767
3 "Dec 08" 79622.147 221571135
4 "Dec 09" 74114.416 205880072
5 "Dec 10" 70993.058 188666980
6 "Jun 06" 12048.162 139137919
7 "Jun 07" 46889.369 165276325
8 "Jun 08" 84732.537 207074374
9 "Jun 09" 83240.084 221945162
10 "Jun 10" 81970.143 236954249
11 "Mar 06" 3451.248 116811392
12 "Mar 07" 34201.197 155190418
13 …Run Code Online (Sandbox Code Playgroud) 几个月前我问了一个关于这个的问题,我认为答案已经解决了我的问题,但是我再次遇到了问题并且解决方案对我不起作用.
我正在导入CSV:
orders <- read.csv("<file_location>", sep=",", header=T, check.names = FALSE)
Run Code Online (Sandbox Code Playgroud)
这是数据帧的结构:
str(orders)
'data.frame': 3331575 obs. of 2 variables:
$ OrderID : num -2034590217 -2034590216 -2031892773 -2031892767 -2021008573 ...
$ OrderDate: Factor w/ 402 levels "2010-10-01","2010-10-04",..: 263 263 269 268 301 300 300 300 300 300 ...
Run Code Online (Sandbox Code Playgroud)
如果我length在第一列OrderID上运行命令,我会得到:
length(orders$OrderID)
[1] 0
Run Code Online (Sandbox Code Playgroud)
如果我运行length在OrderDate上,它会正确返回:
length(orders$OrderDate)
[1] 3331575
Run Code Online (Sandbox Code Playgroud)
这是复制/粘贴head的CSV.
OrderID,OrderDate
-2034590217,2011-10-14
-2034590216,2011-10-14
-2031892773,2011-10-24
-2031892767,2011-10-21
-2021008573,2011-12-08
-2021008572,2011-12-07
-2021008571,2011-12-07
-2021008570,2011-12-07
-2021008569,2011-12-07
Run Code Online (Sandbox Code Playgroud)
现在,如果我重新运行read.csv …
在python中,如何引用前一行并针对它进行计算?具体来说,我有工作dataframes在pandas-我有一个数据帧充满看起来像这样的股票价格信息:
Date Close Adj Close
251 2011-01-03 147.48 143.25
250 2011-01-04 147.64 143.41
249 2011-01-05 147.05 142.83
248 2011-01-06 148.66 144.40
247 2011-01-07 147.93 143.69
Run Code Online (Sandbox Code Playgroud)
以下是我创建此数据框的方法:
import pandas
url = 'http://ichart.finance.yahoo.com/table.csv?s=IBM&a=00&b=1&c=2011&d=11&e=31&f=2011&g=d&ignore=.csv'
data = data = pandas.read_csv(url)
## now I sorted the data frame ascending by date
data = data.sort(columns='Date')
Run Code Online (Sandbox Code Playgroud)
从第2行开始,或者在这种情况下,我猜它是250(PS - 是索引吗?),我想计算2011-01-03和2011-01-04之间的差异,对于这个数据框中的每个条目.我认为合适的方法是编写一个获取当前行的函数,然后计算出前一行,并计算它们之间的差异,使用pandas apply函数来更新数据帧的值.
这是正确的方法吗?如果是这样,我应该使用索引来确定差异吗?(注意 - 我仍处于python初学者模式,因此索引可能不是正确的术语,甚至也不是正确的实现方式)
我有一个非常非常艰难的时间让x轴看起来正确我的图形.
这是我的数据(通过生成dput()):
df <- structure(list(Month = structure(1:12, .Label = c("2011-07-31", "2011-08-31", "2011-09-30", "2011-10-31", "2011-11-30", "2011-12-31", "2012-01-31", "2012-02-29", "2012-03-31", "2012-04-30", "2012-05-31", "2012-06-30"), class = "factor"), AvgVisits = c(6.98655104580674,7.66045407330464, 7.69761337479304, 7.54387561322994, 7.24483848458728, 6.32001400498928, 6.66794871794872, 7.207780853854, 7.60281201431308, 6.70113837397123, 6.57634103019538, 6.75321935568936)), .Names = c("Month","AvgVisits"), row.names = c(NA, -12L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)
这是我想要绘制的图表:
ggplot(df, aes(x = Month, y = AvgVisits)) +
geom_bar() +
theme_bw() +
labs(x = "Month", y = "Average Visits per User")
Run Code Online (Sandbox Code Playgroud)
该图表工作正常 - 但是,如果我想调整日期的格式,我相信我应该添加这个:
scale_x_date(labels = date_format("%m-%Y"))
我正试图让日期标签为'MMM-YYYY'
ggplot(df, aes(x …Run Code Online (Sandbox Code Playgroud) 我试图通过将变量传递到模型中来预测R使用predict()函数的值.
我收到以下错误:
Error in eval(predvars, data, env) :
numeric 'envir' arg not of length one
Run Code Online (Sandbox Code Playgroud)
这是我的data frame名字df:
df <- read.table(text = '
Quarter Coupon Total
1 "Dec 06" 25027.072 132450574
2 "Dec 07" 76386.820 194154767
3 "Dec 08" 79622.147 221571135
4 "Dec 09" 74114.416 205880072
5 "Dec 10" 70993.058 188666980
6 "Jun 06" 12048.162 139137919
7 "Jun 07" 46889.369 165276325
8 "Jun 08" 84732.537 207074374
9 "Jun 09" 83240.084 221945162
10 "Jun 10" 81970.143 …Run Code Online (Sandbox Code Playgroud) SQL Server 能够声明一个变量,然后在查询中调用该变量,如下所示:
DECLARE @StartDate date;
SET @StartDate = '2015-01-01';
SELECT *
FROM Orders
WHERE OrderDate >= @StartDate;
Run Code Online (Sandbox Code Playgroud)
这个功能在亚马逊的RedShift中有效吗?从文档中看,它看起来DECLARE仅用于游标. SET看起来是我正在寻找的功能,但当我尝试使用它时,我收到一个错误.
set session StartDate = '2015-01-01';
[Error Code: 500310, SQL State: 42704] [Amazon](500310) Invalid operation: unrecognized configuration parameter "startdate";
Run Code Online (Sandbox Code Playgroud)
有可能这样做RedShift吗?
当我使用read.csv()函数R加载数据时,我经常发现X已添加到变量名中.我想我总是在第一个变量中看到它,但我可能是错的.
起初,我认为这R可能是因为我在变量名称的开头有一个空格 - 我没有.
其次,我曾经读过某个地方,如果你有一个以数字开头的变量,或者是一个非常短的变量名,R就会添加X.变量名是全文,这个变量名的长度是12个字符,所以它不短.
现在,这纯粹是一种烦恼.我可以重命名该列,但它确实添加了一个步骤,虽然是一个小步骤.
有没有办法阻止流氓X渗透我的数据框?
这是我的原始代码:
df <- read.csv("/file/location.filecsv", header=T, sep=",")
Run Code Online (Sandbox Code Playgroud)
这是有问题的变量:
str(orders)
'data.frame': 2620276 obs. of 26 variables:
$ X.OrderDetailID : Factor w/ 2620193 levels "(2620182 row(s) affected)",..: 105845
Run Code Online (Sandbox Code Playgroud) 根据之前的一些很好的建议,我现在正在编写我的第二个R函数并使用类似的逻辑.但是,我正在尝试自动化一点,并且可能为了自己的利益而变得过于聪明.
我想根据订单数量将客户分成五分位数.这是我的代码:
# sample data
clientID <- round(runif(200,min=2000, max=3000),0)
orders <- round(runif(200,min=1, max=50),0)
df <- df <- data.frame(cbind(clientID,orders))
#function to break them into quintiles
ApplyQuintiles <- function(x) {
cut(x, breaks=c(quantile(df$orders, probs = seq(0, 1, by = 0.20))),
labels=c("0-20","20-40","40-60","60-80","80-100"))
}
#Add the quintile to the dataframe
df$Quintile <- sapply(df$orders, ApplyQuintiles)
Run Code Online (Sandbox Code Playgroud)
table(df$Quintile)
0-20 20-40 40-60 60-80 80-100
40 39 44 38 36
Run Code Online (Sandbox Code Playgroud)
你会在这里看到,在我的样本数据中,我创建了200个观察值,但只列出了197个table.剩下的3个是NA
现在,有一些对于五分位数具有"NA"的clientID.看起来如果他们处于最低休息时间,在这种情况下为1,那么他们就不会被包括在切割功能中.
有没有办法cut包容所有观察?
当你使用RStudio时,你的git工作流程是什么样的?
我想开始使用github来控制我的脚本.我知道你可以使用命令行/终端来推送存储库,但是无法找到git的包.有什么建议吗?
或者,我可以使用system命令:system("git push")
任何人都可以建议一个更好/更优雅的方式来做到这一点?
我已经看到一个Windows功能要复制到剪贴板中R.Mac OSX有相同的功能吗?