R 从数据框中的每列创建变量
我有一个数据框,其中包含我想单独查看的列。我不确定像这样单独分析数据的常用方法是什么,但我想为原始数据框中的每一列创建一个单独的变量/数据框。我知道我可以使用子集,但是有没有一种方法可以使用for循环(这是最简单的方法吗?)从数据框中的x列创建x个新变量 关于我的数据框架的更多细节,我有一个产品和一个相应的索引(产品是根据它来判断的) 示例数据帧:R 从数据框中的每列创建变量,r,variables,for-loop,R,Variables,For Loop,我有一个数据框,其中包含我想单独查看的列。我不确定像这样单独分析数据的常用方法是什么,但我想为原始数据框中的每一列创建一个单独的变量/数据框。我知道我可以使用子集,但是有没有一种方法可以使用for循环(这是最简单的方法吗?)从数据框中的x列创建x个新变量 关于我的数据框架的更多细节,我有一个产品和一个相应的索引(产品是根据它来判断的) 示例数据帧: Date Product 1 Index 1 Product 2 Index 2 1/1/1995
Date Product 1 Index 1 Product 2 Index 2
1/1/1995 2.89 2.75 4.91 5.01
2/1/1995 1.38 1.65 3.47 3.29
因此,我想为每个产品和相应的索引创建一个变量,而无需手动为每个产品创建数据框,也无需在分析产品时进行子集设置。如评论中所述,您可以通过索引来实现这一点。但是,如果您确实希望数据帧中的每一列都有单独的向量,您可以这样做:
df <- data.frame(x=1:10, y=11:20, z=21:30)
for (i in colnames(df)) {
assign(i, df[, i])
}
df您可以为列编制索引,并将它们放入一个新列表中,每个元素都包含产品/索引对和日期列
ind <- seq(2, by = 2, length.out = ncol(dat[-1])/2)
(sets <- lapply(ind, function(i) dat[c(1, i:(i+1))]))
# [[1]]
# Date Product1 Index1
# 1 1/1/1995 2.89 2.75
# 2 2/1/1995 1.38 1.65
#
# [[2]]
# Date Product2 Index2
# 1 1/1/1995 4.91 5.01
# 2 2/1/1995 3.47 3.29
数据:
dat <-
structure(list(Date = structure(1:2, .Label = c("1/1/1995", "2/1/1995"
), class = "factor"), Product1 = c(2.89, 1.38), Index1 = c(2.75,
1.65), Product2 = c(4.91, 3.47), Index2 = c(5.01, 3.29)), .Names = c("Date",
"Product1", "Index1", "Product2", "Index2"), class = "data.frame", row.names = c(NA,
-2L))
dat这就是attach
所做的。您只需执行附加(我的数据\u框架)
大多数知道自己在做什么的人都会告诉你,这介于“不必要”和“不是个好主意”之间。我不明白你为什么要这么做。可以使用索引,如d$Date
,d$`Product 1`
等,也可以使用attach
(我不建议这样做)。list2env(data.GlobalEnv)
可能就是您想要的。它将列作为自己的变量发送到全局环境。@user2662565如果可以将变量名对存储在列表中,则可以执行:indx
dat <-
structure(list(Date = structure(1:2, .Label = c("1/1/1995", "2/1/1995"
), class = "factor"), Product1 = c(2.89, 1.38), Index1 = c(2.75,
1.65), Product2 = c(4.91, 3.47), Index2 = c(5.01, 3.29)), .Names = c("Date",
"Product1", "Index1", "Product2", "Index2"), class = "data.frame", row.names = c(NA,
-2L))