我是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
请有人在这里帮助我吗?
干杯 丹尼斯
答案 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