如何对列中的值执行乘法?

时间:2014-08-13 14:07:16

标签: r

我是R的新手,刚开始本周,我之前没有任何编程经验,如果我用不正确的术语表达我的问题,请原谅我。

我有一个包含4列这样的数据表,如果它们属于b组,我希望将最后一列的值乘以-1,同时保留数据结构。

Data:

 1. 21 A 0.1
 2. 78 B 0.9
 3. 29 B 0.3
 4. 71 A 0.5

要求的结果

 1. 21 A 0.1
 2. 78 B -0.9
 3. 29 B -0.3
 4. 71 A 0.5

请有人在这里帮助我吗?

干杯 丹尼斯

2 个答案:

答案 0 :(得分:1)

您的数据:

df <- read.table(header=F, text=" 
 1. 21 A 0.1
 2. 78 B 0.9
 3. 29 B 0.3
 4. 71 A 0.5")

根据需要更改值:

df[df[3] == "B", 4] <- df[df[3] == "B", 4] * -1

相同
df$V4[df$V3 == "B"] <- df$V4[df$V3 == "B"] * -1

df
#  V1 V2 V3   V4
#1  1 21  A  0.1
#2  2 78  B -0.9
#3  3 29  B -0.3
#4  4 71  A  0.5

基本上,您将data.frame df按第3列(V3)进行子集,其中&#34; B&#34;并选择子集的第4列并将其乘以-1。其余的没有改变。

评论后编辑:

如果您想更改多个列,例如样本数据中的第二个和第四个,您可以这样做:

df[df[3] == "B", c(2,4)] <- df[df[3] == "B", c(2,4)] * -1
df
#  V1  V2 V3   V4
#1  1  21  A  0.1
#2  2 -78  B -0.9
#3  3 -29  B -0.3
#4  4  71  A  0.5

答案 1 :(得分:1)

假设你开始于:

> Data
  V1 V2 V3  V4
1  1 21  A 0.1
2  2 78  B 0.9
3  3 29  B 0.3
4  4 71  A 0.5

你可以这样做:

Data$V4 <- Data$V4 * ifelse(Data$V3 == "B", -1, 1)

哪会导致:

> Data
  V1 V2 V3   V4
1  1 21  A  0.1
2  2 78  B -0.9
3  3 29  B -0.3
4  4 71  A  0.5