我当天的第二个问题和我最后一次尝试使用R来清理这些数据.这是sitrep:
我有一个数据框,其中包含一个POSIXlt日期类型的列.我想从该列中提取日,月和年,并创建3个名为(巧妙地)日,月和年的新列.
数据框如下所示:
order_id dd_mmm_yy
1 2005-07-28
2 2007-03-04
Run Code Online (Sandbox Code Playgroud)
我想最终得到这个:
order_id dd_mmm_yy day month year
1 2005-07-28 28 7 2005
2 2007-03-04 4 3 2007
Run Code Online (Sandbox Code Playgroud)
我已经创建了一个函数来提取日,月和年并将它们返回到列表中(或者数据框,我已经尝试过了).
extractdate = function (date) {
day = format(date, format="%d")
month = format(date, format="%m")
year = format(date, format="%Y")
list(day=day, month=month, year=year)
}
Run Code Online (Sandbox Code Playgroud)
以下是基于早期问题和问题我尝试过的内容:
cbind(orders, t(sapply(orders$dd_mmm_yy, extractdate)))
Run Code Online (Sandbox Code Playgroud)
这给了我这个:
Error in data.frame(..., check.names = FALSE) :
arguments imply differing number of rows: 5, 9
Run Code Online (Sandbox Code Playgroud)
t(sapply ......本身给了我一些疯狂的理由:
day month year
sec Character,5 Character,5 Character,5
min Character,5 Character,5 Character,5 …Run Code Online (Sandbox Code Playgroud) 更多Clojure怪异.我有这个功能,我正在尝试定义和调用.它有3个参数,但当我用3个参数调用它时,我得到了
Wrong number of args (1) passed to: solr-query$correct-doc-in-results-QMARK-$fn
[Thrown class clojure.lang.ArityException]
Run Code Online (Sandbox Code Playgroud)
当我用2个参数调用它时,我得到了
Wrong number of args (2) passed to: solr-query$correct-doc-in-results-QMARK-
[Thrown class clojure.lang.ArityException]
Run Code Online (Sandbox Code Playgroud)
当我用4个参数调用它时,我得到了
Wrong number of args (4) passed to: solr-query$correct-doc-in-results-QMARK-
[Thrown class clojure.lang.ArityException]
Run Code Online (Sandbox Code Playgroud)
这是函数的定义:
(defn correct-doc-in-results? [query results docid]
"Check if the docid we expected is returned in the results"
(some #(.equals docid) (map :id (get results query))))
Run Code Online (Sandbox Code Playgroud)
这就是我试图调用它的方式(来自REPL,使用emacs中的swank):
(correct-doc-in-results? "FLASHLIGHT" all-queries "60184")
Run Code Online (Sandbox Code Playgroud)
有谁知道发生了什么事?为什么我认为我在传递3时只传递1个参数,但在2或4时正确?我不是一个非常流利的clojure程序员,但定义一个函数是非常基本的.
今天下午我的大脑正在试图弄清楚这个.我对Clojure和Lisp很新.我有一个数据结构,它是一个地图矢量,我希望将所有地图中的特定键的所有值都放到另一个矢量中.
例如,假设这是绑定到myvec的映射向量:
[ { "key1" "value1" "key2" "value2"} {"key1" "value3" "key2" "value4"} ]
Run Code Online (Sandbox Code Playgroud)
我想要一个看起来像的矢量
[ "value1" "value3" ]
Run Code Online (Sandbox Code Playgroud)
由密钥"key1"的所有值组成
我能想到的唯一方法是
(for [i (range (count(myvec)))] ((myvec i) "key1"))
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法?好像一定有.
谢谢.
我是Clojure的新手,并为你的Clojure大师提出了一个有趣的问题.我正在编写"编程集体智能"一书,并尝试在Clojure中编写示例代码(本书将它们全部用Python编写).在第一章中,我们有一个电影评论家的哈希映射设置和他们给不同电影的排名.它看起来像这样:
{"Lisa Rose" {"Lady in the Water" 2.5, "Snakes on a Plane" 3.5 },
"Gene Seymour" {"Lady in the Water" 3.0, "Snakes on a Plane" 3.5}}
Run Code Online (Sandbox Code Playgroud)
问题是这个.如何将其内部转出,以便我得到一个如下所示的哈希映射:
{"Lady in the Water" {"Lisa Rose" 2.5, "Gene Seymour" 3.0},
"Snakes on a Plane" {"Lisa Rose" 3.5, "Gene Seymour" 3.5}}
Run Code Online (Sandbox Code Playgroud)
你有什么功能来实现这个目标?
看来我应该知道如何做到这一点,或者至少在这里或其他地方找到答案.不幸的是两者都没有用
我有一个客户数据框,其中一列是他们的id,另一列是他们的完整地址.我想为每一行添加3列,其中包含来自地理编码查找的lat,long和county代码.
该数据框看起来像
customer_id fulladdress
1 123 Main St., Anywhere, FL
2 321 Oak St., Thisplace, CA
Run Code Online (Sandbox Code Playgroud)
我创建了一个地理编码函数,它接受完整的地址并返回一个带有lat,long和county列的数据框.
如何将我的地理编码功能应用于数据框的每一行,并将结果作为3列附加到现有数据框中,使其如下所示:
customer_id fulladdress lat long county
1 123 Main St., Anywhere, FL 33.2345 -92.3333 43754
2 321 Oak St., Thisplace, CA 25.3333 -120.333 32960
Run Code Online (Sandbox Code Playgroud)
我尝试过使用apply和ddply,但我似乎无法弄清楚其中一个人在做什么.我用ddply尝试了这个,但它所做的只是让我回到原始数据框架.
ddply(customers[1:3,], .(fulladdress), function(x) { geocode(x$fulladdress)})
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助.
对于Clojure来说有点新鲜,我似乎无法弄清楚如何做一些看似简单的事情.我只是看不到它.我有一个矢量seq.假设每个向量具有表示客户编号和发票编号的两个值,并且每个向量表示项目的销售.所以它看起来像这样:
([ 100 2000 ] [ 100 2000 ] [ 101 2001 ] [ 100 2002 ])
Run Code Online (Sandbox Code Playgroud)
我想计算独特客户和独特发票的数量.所以这个例子应该产生矢量
[ 2 3 ]
Run Code Online (Sandbox Code Playgroud)
在Java或其他命令式语言中,我将循环遍历seq中的每个向量,将客户编号和发票编号添加到集合中,然后计算每个集合中的值的数量并将其返回.我看不到这样做的功能方法.
谢谢您的帮助.
编辑:我应该在我原来的问题中指出,矢量的seq是数百万的,实际上只有两个值.所以我想只通过seq一次并计算这些独特的计数(以及一些总和)在seq上运行.
我是R的新手,我正在关注这篇文章来学习ggmap.
qmap("Forbidden city",zoom=15)
qmap("Forbidden city",zoom=15, source="osm")
Run Code Online (Sandbox Code Playgroud)
虽然上面的第一个命令工作正常,但第二个命令给我一个错误信息:
来自网址的地图:http: //maps.googleapis.com/maps/api/staticmap?centre = Forbidden+city&zoom = 15&size =%20640x640&maptype = terrain&sensor = false Google Maps API服务条款:http://developers.google. com/maps/terms 网址中的信息:http ://maps.googleapis.com/maps/api/geocode/json?address = Forbidden+city&sensor = false Google Maps API服务条款:http://developers.google.com/maps/terms 错误:地图抓取失败 - 请参阅?get_openstreetmap中的详细信息.另外:警告信息:在download.file(url,destfile = destfile,quiet =!messaging,mode ="wb"):无法打开:HTTP状态为'503 Service Unavailable'
任何帮助表示赞赏.
仍然通过编程集体智能和使用Clojure编写代码.我有它的工作,但有些部分真的很难看,所以我想我会问一些这里的专家帮忙清理它.
假设我有一个看起来像这样的地图(绑定到" recs "):
{"Superman Returns" 3.902419556891574, "Lady in the Water" 2.8325499182641614,
"Snakes on a Plane" 3.7059737842895792, "The Night Listener" 3.3477895267131017,
"You, Me and Dupree" 2.651006036204627, "Just My Luck" 2.5309807037655645}
Run Code Online (Sandbox Code Playgroud)
我想删除那些也在地图中的键(绑定到" mymovies ")的项目:
{"Snakes on a Plane" 4.5, "You, Me and Dupree" 1.0, "Superman Returns" 4.0}
Run Code Online (Sandbox Code Playgroud)
这样我就得到了地图:
{"Lady in the Water" 2.8325499182641614, "The Night Listener" 3.3477895267131017,
"Just My Luck" 2.5309807037655645}
Run Code Online (Sandbox Code Playgroud)
我设法完成的代码如下所示:
(apply merge (map #(hash-map (first %) (second %))
(remove #(contains? mymovies (first %))
recs)))
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很难看.似乎不应该从我从"删除"返回的值创建一个地图.有更清洁的方法吗?
更新:Joost的回答引发了另一个想法.如果我将两张地图的按键分成几组,我可以使用这样的select-keys:
(select-keys …Run Code Online (Sandbox Code Playgroud) 在我正在研究的一个项目中,我遇到了一个有趣的问题,我对其他解决方案感到好奇.我正在阅读"The Little Schemer",所以我正在尝试一些递归技术.我想知道是否有另一种方法可以通过递归来实现这一点,并且如果有一种不使用递归的方法也感兴趣.
问题是通过获取每个第n个元素来获取序列并将其划分为seqs序列.例如这个向量:
[ :a :b :c :d :e :f :g :h :i ]
Run Code Online (Sandbox Code Playgroud)
当用n = 3分区时会产生seq
((:a :d :g) (:b :e :h) (:c :f :i))
Run Code Online (Sandbox Code Playgroud)
并且n = 4:
((:a :e :i) (:b :f) (:c :g) (:d :h))
Run Code Online (Sandbox Code Playgroud)
等等.我用两个函数解决了这个问题.第一个创建内部seqs,另一个将它们拉在一起.这是我的功能:
(defn subseq-by-nth
"Creates a subsequence of coll formed by starting with the kth element and selecting every nth element."
[coll k n]
(cond (empty? coll) nil
(< (count coll) n) (seq (list (first coll)))
:else (cons (nth coll k) (subseq-by-nth …Run Code Online (Sandbox Code Playgroud) 我们有一个应用程序,我们正在GAE上部署.我的任务是提出将我们存储GAE数据存储的数据复制到亚马逊云中运行的系统的选项.
理想情况下,我们可以执行此操作,而无需在每次同步时传输整个数据存储.复制不需要接近实时,所以像一天一次或两次同步这样的工作就可以了.
任何有GAE经验的人都可以帮我解决这些选项吗?到目前为止,我想出了:
使用Google提供的bulkloader.py将数据导出为CSV,并以某种方式将CSV传输到亚马逊并在那里处理
创建在GAE上运行的Java应用程序,从数据存储中读取数据并将数据发送到在Amazon上运行的另一个Java应用程序.
这些选项有用吗?与那些陷阱有什么关系?还有哪些其他选择?