2014-02-04 2 views
-1

Благодарим вас за помощь. Я пытаюсь написать уравнение, которое использует значения, выбранные из CSV-файла. Это выглядит примерно так, назовем его df.В R, как выбрать одно значение из одного столбца на основе значения во втором столбце?

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 для каждого сайта. Я пытаюсь создать новый столбец под названием SigmaBS с результатами уравнения с использованием TS.

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

Что, где я бегу в проблемы, как функция возвращает подмножество всех столбцов, которые коррелируют с колонкой сайта = H4A1

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

Но опять же, мне нужно только значение -42,75209.

Прошу прощения, если это простой вопрос, но я бы очень признателен за любую помощь, которую вы можете предложить.

+0

Я удаление SQL, потому что это явно о R. –

+0

Спасибо! Это был один из предложенных тегов, и библиотека sqldf была потенциальным ответом на мою проблему, поэтому я подумал, что это может быть уместно. – user3272548

+0

Всегда ли это первый результат из подмножества df, которое вы ищете? –

ответ

1

Если вы настаиваете на использовании функции подмножество, имеет select аргумент:

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

Лучшим вариантом является использование [] обозначения:

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

или оператор $:

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

Выбор аргумента был чем-то, о чем я не знал ... I должен был пропустить его или забыть об этом, когда я вникаю в эту проблему, спасибо. – user3272548

+0

Опровергаю снова, но что делать, если мне потребуется выбор нескольких строк. В этом примере я выбираю только значения TS, но если бы я хотел выберите дополнительные значения столбца, которые находятся в той же строке, что и H4A1, я могу сделать следующее: df [df $ Site == "H4A1", "TS, TS2, TS3"]? – user3272548

+0

Закрыть, имена столбцов должны быть символьным вектором : 'df [df $ Site ==" H4A1 ", c (" TS "," TS2 "," TS3 ")]' –

0

Похоже, вы пытаетесь создать новый столбец с именем SigmaBS, где значения в каждой строке 10^(value of TS)/10

Если да, то этот код должен работать:

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

Вы можете использовать эту простую команду:

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

Простой и эффективный, это работает для конкретной проблемы, которую я имею. Спасибо! – user3272548

+0

Извинения, я до сих пор привык к сайту. Я ценю помощь! – user3272548

Смежные вопросы

 Смежные вопросы