我有一个数据框,其中有几列看起来像这样(但有更多列):
> df <- data.frame(Var1 = 1:10, Var2 = 11:20, Var3 = 21:30, Var4 = 31:40)
> df
Var1 Var2 Var3 Var4
1 1 11 21 31
2 2 12 22 32
3 3 13 23 33
4 4 14 24 34
5 5 15 25 35
6 6 16 26 36
7 7 17 27 37
8 8 18 28 38
9 9 19 29 39
10 10 20 30 40
对于某些专栏,我想做一些操作。如何一次只对这些列进行地址处理而不是单独处理每个列?
是否有可能为每列提供“属性”或“标签”(抱歉,我现在没有正确的用语)?
假设Var1和Var2的“property”=“a”,其中Var3和Var4的“property”=“b”。
然后我可以做类似
的事情if (property of column = "a"){column with property a * 2}
有什么建议吗?
答案 0 :(得分:2)
对于某些专栏,我想做一些操作。我怎么能地说 只列出那些列,而不是在每个列处寻址 它自己的?
为什么不将这些列放在另一个向量中,然后可以将其用于列子集,如下所示:
df <- data.frame(Var1 = 1:10, Var2 = 11:20, Var3 = 21:30, Var4 = 31:40)
cols <- c("Var1", "Var2")
df[, cols] <- sapply(df[, cols], "*", 2)
df
# Var1 Var2 Var3 Var4
# 1 2 22 21 31
# 2 4 24 22 32
# 3 6 26 23 33
# 4 8 28 24 34
# 5 10 30 25 35
# 6 12 32 26 36
# 7 14 34 27 37
# 8 16 36 28 38
# 9 18 38 29 39
# 10 20 40 30 40