我是R的新手并寻求关于如何在两个数据表之间进行插值并在新列中将结果打印到“table1”的建议
表1:
pexpect
表2:
> (Table1 <- read.csv2("~/R/Table1.txt",sep=""))
WindSpeed Degrees Direction
1 7.68 58.9 ENE
2 5.09 63.2 ENE
3 7.56 72.2 ENE
4 8.39 73.8 ENE
5 7.34 73.1 ENE
6 7.83 74.9 ENE
7 8.42 73.8 ENE
8 7.70 85.5 E
9 2.58 75.6 E
现在我想取Table1 $ WindSpeed值,其中Direction ==“ENE”并在Table2 $ Wind.speed值之间进行插值,以将插值Table2 $ Output值打印到新列Table1 $ Output。
所以我一直想做的是:
> (Table2 <- read.delim("~/R/Table2.txt")[-1,])
Wind.speed Output
2 0,5 0
3 1,5 0
4 2,5 1.540
5 3,5 5.938
6 4,5 13.747
7 5,5 25.740
8 6,5 42.939
9 7,5 66.301
10 8,5 96.087
但是出了点问题我得到了:
(Table1 <-
transform(
Table1, Output =
ifelse(
Direction == "ENE",
approx(
Table2$Wind.speed,Table2$Output,xout=Table1$Output, method = "constant"), "Næsta átt")
)
)
那里有谁可以帮助我?
好一点更新: 我之前得到的回答非常有帮助,但我想找到给定Table2 $ Output之间的值,例如
WindSpeed Degrees Direction Output
1 7.68 58.9 ENE 1, 1, 1, 1, 1, 1, 1, 1, 1
2 5.09 63.2 ENE NA, NA, NA, NA, NA, NA, NA, NA, NA
3 7.56 72.2 ENE 1, 1, 1, 1, 1, 1, 1, 1, 1
4 8.39 73.8 ENE NA, NA, NA, NA, NA, NA, NA, NA, NA
5 7.34 73.1 ENE 1, 1, 1, 1, 1, 1, 1, 1, 1
6 7.83 74.9 ENE NA, NA, NA, NA, NA, NA, NA, NA, NA
7 8.42 73.8 ENE 1, 1, 1, 1, 1, 1, 1, 1, 1
8 7.70 85.5 E Næsta átt
9 2.58 75.6 E Næsta átt
因此我不能使用“常数”,因为我的输出数据不是线性的,我不能使用“线性”......这里有什么帮助吗? :)
答案 0 :(得分:0)
您的代码中只有两个小错误:
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(process.getInputStream()));
String s = null;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
更改为xout
(如果我理解您的问题)Table1$WindSpeed
所以:
$y
答案 1 :(得分:0)
以下是使用approxfun
的解决方案:
DF1 <- read.table(text = " Wind.speed Output
2 0,5 0
3 1,5 0
4 2,5 1.540
5 3,5 5.938
6 4,5 13.747
7 5,5 25.740
8 6,5 42.939
9 7,5 66.301
10 8,5 96.087")
DF1$Wind.speed <- as.numeric(gsub(",", ".", DF1$Wind.speed, fixed = TRUE))
fun <- approxfun(DF1$Wind.speed, DF1$Output)
fun(7.68)
#[1] 71.66248
DF2 <- read.table(text = " WindSpeed Degrees Direction
1 7.68 58.9 ENE
2 5.09 63.2 ENE
3 7.56 72.2 ENE
4 8.39 73.8 ENE
5 7.34 73.1 ENE
6 7.83 74.9 ENE
7 8.42 73.8 ENE
8 7.70 85.5 E
9 2.58 75.6 E")
DF2$Output <- NA
DF2[DF2$Direction == "ENE", "Output"] <- fun(DF2[DF2$Direction == "ENE", "WindSpeed"])
# WindSpeed Degrees Direction Output
#1 7.68 58.9 ENE 71.66248
#2 5.09 63.2 ENE 20.82287
#3 7.56 72.2 ENE 68.08816
#4 8.39 73.8 ENE 92.81054
#5 7.34 73.1 ENE 62.56308
#6 7.83 74.9 ENE 76.13038
#7 8.42 73.8 ENE 93.70412
#8 7.70 85.5 E NA
#9 2.58 75.6 E NA
但是,为Output
开发一个合适的模型而不是插值可能会更好。