小编Dav*_*aid的帖子

从POSIXlt中提取日期元素并放入R中的数据框

我当天的第二个问题和我最后一次尝试使用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)

r

15
推荐指数
2
解决办法
3万
查看次数

获取错误的args数量传递给Clojure函数

更多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

10
推荐指数
1
解决办法
7078
查看次数

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

8
推荐指数
2
解决办法
6696
查看次数

在Clojure里面翻出哈希图

我是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)

你有什么功能来实现这个目标?

clojure

8
推荐指数
2
解决办法
1120
查看次数

将函数应用于data.frame中的每一行,并将结果附加到R中的data.frame

看来我应该知道如何做到这一点,或者至少在这里或其他地方找到答案.不幸的是两者都没有用

我有一个客户数据框,其中一列是他们的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)

谢谢您的帮助.

r function apply dataframe

8
推荐指数
1
解决办法
3799
查看次数

Clojure - 从seq中的向量计数唯一值

对于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上运行.

clojure

7
推荐指数
2
解决办法
4526
查看次数

ggmap:使用开放街道地图作为源时出错

我是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'

任何帮助表示赞赏.

r openstreetmap ggmap

7
推荐指数
1
解决办法
2682
查看次数

根据另一个地图的内容从地图中删除项目

仍然通过编程集体智能和使用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)

clojure

6
推荐指数
1
解决办法
2120
查看次数

对seq进行分区 - Clojure中的递归(或一般的Lisp)

在我正在研究的一个项目中,我遇到了一个有趣的问题,我对其他解决方案感到好奇.我正在阅读"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)

lisp recursion clojure

6
推荐指数
1
解决办法
755
查看次数

从GAE数据存储复制数据

我们有一个应用程序,我们正在GAE上部署.我的任务是提出将我们存储GAE数据存储的数据复制到亚马逊云中运行的系统的选项.

理想情况下,我们可以执行此操作,而无需在每次同步时传输整个数据存储.复制不需要接近实时,所以像一天一次或两次同步这样的工作就可以了.

任何有GAE经验的人都可以帮我解决这些选项吗?到目前为止,我想出了:

  1. 使用Google提供的bulkloader.py将数据导出为CSV,并以某种方式将CSV传输到亚马逊并在那里处理

  2. 创建在GAE上运行的Java应用程序,从数据存储中读取数据并将数据发送到在Amazon上运行的另一个Java应用程序.

这些选项有用吗?与那些陷阱有什么关系?还有哪些其他选择?

google-app-engine google-cloud-datastore

3
推荐指数
1
解决办法
384
查看次数