在R中,如何根据第二列中的值从一列中选择单个值?

时间:2014-02-04 20:46:24

标签: r

谢谢你的帮助。我正在尝试编写一个使用从.csv文件中选择的值的等式。它看起来像这样,我们称之为df。

df<-read.csv("SiteTS.csv", header=TRUE,sep=",")
df

  Site        TS
1  H4A1 -42.75209
2  H4A2 -43.75101
3  H4A3 -41.75318
4  H4C3 -46.76770
5  N1C1 -42.68940
6  N1C2 -36.95200
7  N1C3 -43.16750
8  N2A2 -38.58040
9  S4C1 -35.32000
10 S4C2 -34.52420

我的等式需要每个站点的TS列中的值。我正在尝试使用TS创建一个名为SigmaBS的新列,其中包含等式的结果。

df["SigmaBS"]<-10^(subset(df, Site=="H4A1"/10)

这是我遇到问题的地方,因为子集函数返回与Site列相关的所有列= H4A1

subset(df, Site =="H4A1")
Site        TS
1 2411 -42.75209

但是,我只需要值-42.75209。

如果这是一个简单的问题,我道歉,但我非常感谢您提供的任何帮助。

3 个答案:

答案 0 :(得分:1)

如果你坚持使用子集函数,它有一个select参数:

subset(df, Site=="H4A1", select="TS")

更好的选择是使用[]表示法:

df[df$Site=="H4A1", "TS"]

$运营商:

subset(df, Site=="H4A1")$TS

答案 1 :(得分:1)

您可以使用以下简单命令:

df$SigmaBS <- 10 ^ (df$TS / 10)

答案 2 :(得分:0)

听起来您正在尝试创建一个名为SigmaBS的新列,其中每行的值为10^(value of TS) / 10

如果是这样,这段代码应该有效:

SigmaBS <- sapply(df$TS, function(x) 10^(x/10))
df$SigmaBS <- SigmaBS