我有一个数据框,其中包含我想单独查看的列。我不确定像这样单独分析数据的常用方法是什么,但我想为原始数据框中的每一列创建一个单独的变量/数据框。我知道我可以进行子集化,但有没有一种方法可以使用for循环(这是最简单的方法吗?),以便从我的数据框中的x列创建x个新变量?
有关我的数据框的更多详细信息,我有一个产品和相应的索引(该产品正在被评判)。
示例数据框:
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
所以我想为每个产品和相应的索引创建一个变量,而不是为每个产品创建一个数据框,或者当我想分析产品时进行子集化。
答案 0 :(得分:1)
与评论中提到的人一样,您可以通过编制索引来完成此操作。但是,如果您确实需要数据框中每列的单独向量,则可以这样做:
df <- data.frame(x=1:10, y=11:20, z=21:30)
for (i in colnames(df)) {
assign(i, df[, i])
}
答案 1 :(得分:1)
您可以索引列并将它们放入一个新列表中,每个元素都包含产品/索引对和日期列。
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
如果需要,您可以使用list2env
list2env(setNames(sets, paste0("Set", seq_along(sets))), .GlobalEnv)
Set1
# Date Product1 Index1
# 1 1/1/1995 2.89 2.75
# 2 2/1/1995 1.38 1.65
Set2
# 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))
答案 2 :(得分:0)
这是attach
的作用。你可以attach(my_data_frame)
。
大多数知道他们正在做什么的人都会告诉你这种情况介于“不必要的”和“不需要的”之间。并且&#34;不是一个好主意&#34;。