我正在尝试使用dplyr创建一个窗口函数,它将返回一个新的向量,其中每个值与其第一个组之间存在差异.例如,给定此数据集:
dummy <- data.frame(userId=rep(1,6),
libId=rep(999,6),
curatorId=c(1:2,1:2,1:2),
iterationNum=c(0,0,1,1,2,2),
rf=c(5,10,0,15,30,40)
)
Run Code Online (Sandbox Code Playgroud)
这会创建此数据集:
userId libId curatorId iterationNum rf
1 1 999 1 0 5
2 1 999 2 0 10
3 1 999 1 1 0
4 1 999 2 1 15
5 1 999 1 2 30
6 1 999 2 2 40
Run Code Online (Sandbox Code Playgroud)
鉴于此分组:
dummy<-group_by(dummy,libId,userId,curatorId)
Run Code Online (Sandbox Code Playgroud)
会得到这个结果:
userId libId curatorId iterationNum rf rf.diff
1 1 999 1 0 5 0
2 1 999 2 0 10 0
3 1 999 1 1 0 …Run Code Online (Sandbox Code Playgroud) 我希望'压扁'我的数据集以便于数据挖掘.每个分类列应更改为多个布尔列.我有一个具有分类值的列,例如:
ID col1
1 A
2 B
3 A
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来转动这个表,并有一个聚合函数告诉我这个ID是否有值A或B:
结果:
ID col1A col1B
1 1 0
2 0 1
3 1 0
Run Code Online (Sandbox Code Playgroud)
我尝试使用PIVOT,但不知道在其中使用哪个聚合函数.
也寻找SF的答案,但找不到任何...
我正在使用MS-SQL 2012.
任何帮助,将不胜感激!奥马里
编辑:
col1中的类别数量未知,因此解决方案必须是动态的.谢谢 :)
我希望对具有大多数分类功能的数据进行分类.为此目的,欧几里德距离(或任何其他数字假定距离)不适合.
我在寻找[R]的kNN实现,可以选择不同的距离方法,如汉明距离.有没有办法使用常见的kNN实现,如{class}中具有不同距离度量函数的实现?
我正在使用R 2.15
LogCat继续向我展示一个
光标在没有事先关闭的情况下完成()
警告.
我在以前版本的应用程序中使用SQLite,但不再使用它了.
我试图找到这个警告的原因没有运气.一些谷歌和Stackoverflow的参考文献说它与数据库有关.
这个警告意味着什么?我应该忽略它吗?
我可以提供示例代码,但我不知道我的应用程序的哪个部分导致了这个问题.也没有添加堆栈跟踪.
编辑:显然我正在使用的第三方依赖项正在使用游标,这会导致此警告.
我有以下data.frame:
df <- data.frame(timestamp=c(1428319770511, 1428319797218, 1428319798182, 1428319803327, 1428319808478),
session=c("A","A","B","A","A"))
Run Code Online (Sandbox Code Playgroud)
我想将此数据框转换为时间序列,并在短于一秒的时间窗口上工作.我已经尝试过zoo和xts,但我发现很难代表大纪元的日期.这是我已经尝试过的:
df$date<-strptime(as.POSIXct(df$timestamp, origin="1970-01-01"),format="%Y-%m-%d %H:%M:%OS")
Run Code Online (Sandbox Code Playgroud)
哪个返回NAs.打电话给:
df$date<-strptime(as.POSIXct(df$timestamp/1000, origin="1970-01-01"),format="%Y-%m-%d %H:%M:%OS")
Run Code Online (Sandbox Code Playgroud)
有效,但不包含毫秒数据.我也试过玩,options(digits.secs=3)但没有运气.
我想我在这里用R的处理毫秒来打一个小墙,但任何想法都会非常感激.
- -编辑 - -
好的,感谢Joshua的回答和评论在这里将 @jirk Eddelbuettel的UNIX纪元转换为R中的Date对象,除以1000不会截断数据.这样可行:
options(digits.secs = 3)
df$date<-as.POSIXct(df$timestamp/1000, origin="1970-01-01", tz="UTC")
Run Code Online (Sandbox Code Playgroud)
哪个回报:
timestamp session date
1428319770511 A 2015-04-06 14:29:30.510
1428319797218 A 2015-04-06 14:29:57.217
1428319798182 B 2015-04-06 14:29:58.181
1428319803327 A 2015-04-06 14:30:03.326
1428319808478 A 2015-04-06 14:30:08.477
Run Code Online (Sandbox Code Playgroud) 我正在尝试从 pandas_udf 返回特定结构。它在一个集群上工作,但在另一个集群上失败。我尝试在组上运行 udf,这要求返回类型为数据框。
from pyspark.sql.functions import pandas_udf
import pandas as pd
import numpy as np
from pyspark.sql.types import *
schema = StructType([
StructField("Distance", FloatType()),
StructField("CarId", IntegerType())
])
def haversine(lon1, lat1, lon2, lat2):
#Calculate distance, return scalar
return 3.5 # Removed logic to facilitate reading
@pandas_udf(schema)
def totalDistance(oneCar):
dist = haversine(oneCar.Longtitude.shift(1),
oneCar.Latitude.shift(1),
oneCar.loc[1:, 'Longitude'],
oneCar.loc[1:, 'Latitude'])
return pd.DataFrame({"CarId":oneCar['CarId'].iloc[0],"Distance":np.sum(dist)},index = [0])
## Calculate the overall distance made by each car
distancePerCar= df.groupBy('CarId').apply(totalDistance)
Run Code Online (Sandbox Code Playgroud)
这是我得到的例外:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
C:\opt\spark\spark-2.3.0-bin-hadoop2.7\python\pyspark\sql\udf.py …Run Code Online (Sandbox Code Playgroud)