如何在R中向一个data frame指定位置插入一列或一行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在R中向一个data frame指定位置插入一列或一行相关的知识,希望对你有一定的参考价值。

参考技术A 假设数据框是example.data,有五行数据,添加age这一列可以用这个方法:

example.data$age <- c(10,20,30,40,50)

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

【中文标题】将函数应用于 data.frame 中的每一行并将结果附加到 R 中的 data.frame【英文标题】:Apply a function to each row in a data.frame and append the result to the data.frame in R 【发布时间】:2011-12-28 20:10:35 【问题描述】:

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

我有一个客户数据框,其中一列是他们的 ID,另一列是他们的完整地址。我想为每行添加 3 列,其中包含来自地理代码查找的纬度、经度和县代码。

那个数据框看起来像

customer_id       fulladdress
     1            123 Main St., Anywhere, FL
     2            321 Oak St., Thisplace, CA

我创建了一个地理编码函数,它获取完整地址并返回一个包含纬度、经度和县列的数据框。

如何将我的地理编码功能应用于数据框的每一行,并将结果作为 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

我尝试过使用 apply 和 ddply,但我似乎无法弄清楚其中任何一个在做什么。我用 ddply 试过了,但它所做的只是把原始数据框还给我。

ddply(customers[1:3,], .(fulladdress), function(x)  geocode(x$fulladdress))

感谢您的帮助。

【问题讨论】:

cbind(customers,sapply(geocode(customers$fulladdress)))? data.frame(customers, "geocode"=sapply(geocode(customers$fulladdress))) 以一步命名列。 感谢您让我走上正轨。这是最终起作用的方法: cbind(customers, t(sapply(customers$fulladdress,geocode, USE.NAMES=F))) 您可以自己将其添加为答案并接受它以结束此问题。 我在gist.github.com/1365208 发布了函数。它之前工作过,但我现在正在运行它时遇到“500 内部服务器错误”。要么 Infochimps 已关闭,要么我在之前玩它时超出了我的配额。您需要将 infochimps api 密钥放入 api.key 变量中。然后只需输入一个地址,您就会得到纬度、经度和县级代码。 【参考方案1】:

感谢您让我走上正轨。这是最终奏效的方法:

cbind(customers, t(sapply(customers$fulladdress,geocode, USE.NAMES=F))) 

【讨论】:

以上是关于如何在R中向一个data frame指定位置插入一列或一行的主要内容,如果未能解决你的问题,请参考以下文章

将 data.frame 从 R 插入到 Mongodb

r语言怎么调用data.frame数据框的某列数据

如何使用R [list]将列表的名称插入到列中

R语言Data Frame数据框常用操作

从 R 中的 data.frame 中删除一整列

如何将简单的 data.frame 附加到 R 中的 SpatialPolygonDataFrame?