转换数据框字符串变量名称
我有一个包含日期和 ID 的数据框。我需要根据每个日期向该数据框添加多列。我使用 ddply 来执行此操作,如下所示:
ddply(df, "dt", transform, new_column1 = myfun(column_name_1))
但是,我有一堆列名称和想要添加多个新列。有没有一种方法可以传递字符串进行转换而不是 new_column1 ?例如,我尝试过:
ddply(df, "dt", transform, get("some_column_name")=myfun(column_name_1))
但这不起作用。此外,如果我将 column_name_1
作为字符串传递给 myfun,我可以在 myfun
中使用 get("column_name_1")
来引用柱子?
更新: 不知道如何更好地格式化它
input:
id date val
id1 d1 1
id2 d1 2
id3 d1 3
id4 d1 4
id1 d2 10
id2 d2 20
id3 d2 30
id4 d2 40
(例如 2 个桶)
id date val bucket
id1 d1 1 1
id2 d1 2 1
id3 d1 3 2
id4 d1 4 2
id1 d2 10 1
id2 d2 20 1
id3 d2 30 2
id4 d2 40 2
I have a data frame that contains dates and id's. I need to add multiple columns to this data frame based on each date. I use ddply
to do this as follows:
ddply(df, "dt", transform, new_column1 = myfun(column_name_1))
However,I have a bunch of column names and would like to add multiple new columns. Is there a way that I can pass a string to transform instead of new_column1? For example I tried:
ddply(df, "dt", transform, get("some_column_name")=myfun(column_name_1))
but this does not work. Additionally, if I pass the column_name_1
to myfun as a string, can I just use get("column_name_1")
within myfun
to refer to the column?
UPDATE:
NOT SURE HOW TO FORMAT THIS BETTER
input:
id date val
id1 d1 1
id2 d1 2
id3 d1 3
id4 d1 4
id1 d2 10
id2 d2 20
id3 d2 30
id4 d2 40
out (for 2 buckets for example)
id date val bucket
id1 d1 1 1
id2 d1 2 1
id3 d1 3 2
id4 d1 4 2
id1 d2 10 1
id2 d2 20 1
id3 d2 30 2
id4 d2 40 2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用
transform
来做这件事很巧妙,但为什么不做一些更基本的事情,比如或者你可以有一个列名向量来修改,或者动态地做:
用
assign 可能有更聪明的东西
在适当的环境中。如果我有一个可重现的例子,我可以测试一下。
Doing it with
transform
is slick, but why not something more basic likeOr you can have a vector of column names to modify, or do it on the fly:
There's probably something even cleverer with
assign
in the appropriate environment.If I had a reproducible example I could test this.