Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将新列添加到现有数据集_R - Fatal编程技术网

R 将新列添加到现有数据集

R 将新列添加到现有数据集,r,R,我需要在此数据集中添加另一列,并使用County列名称。如果城市是马德里,国家就必须是西班牙。我现在这是一个非常小的数据集,我需要能够以编程的方式完成这项工作 我希望我的新数据框如下所示: Date City Temp 1/1/2012 Liverpool 10 1/2/2012 Madrid 20 1/3/2012 Milan 40 1/4/2012 Istanbul 35 1/5/2012 Munich 10 我将如

我需要在此数据集中添加另一列,并使用County列名称。如果城市是马德里,国家就必须是西班牙。我现在这是一个非常小的数据集,我需要能够以编程的方式完成这项工作

我希望我的新数据框如下所示:

  Date     City     Temp
  1/1/2012 Liverpool  10
  1/2/2012 Madrid     20
  1/3/2012 Milan      40
  1/4/2012 Istanbul   35
  1/5/2012 Munich      10

我将如何在R?

中使用您提供的确切数据进行此操作的任何提示如下:

Date     City        Temp   Country
--------------------------------------
1/1/2012 Liverpool    10    England
1/2/2012 Madrid       20    Matrid
1/3/2012 Milan        40    Italy
1/4/2012 Istanbul     35    Turkey
1/5/2012 Munich       10    Germany

如果不知道这些城市是如何映射到您所在的国家的(例如,它们是否映射到
列表
向量
数据框
,或者其他一些地方),很难猜出正确的答案是什么。这里有一种方法,城市-国家地图位于列表中:

library(maps)
data(world.cities)
head(world.cities)

world.cities[world.cities$name == "Istanbul" ,]

df是否要添加行或列?您想添加的行/列是什么样子的?您想让它自动识别国家吗?我想在列中插入一个国家,然后检查每一行。例如,如果它是matrid,我需要在该行中插入西班牙。因为马德里将多次出现在这个数据集中。每次,我看到马德里,我都应该把西班牙作为国家。你需要另一张桌子来绘制城市到国家的地图。如果有一个图书馆为我们做这件事,那就太酷了……我喜欢使用ifelse,我遵循你的代码,而不是为我工作。如果这个城市是利物浦,Countyr是英格兰,你能只写一行吗?这是因为你在慕尼黑的拼写错误吗?她是你想要的一行,但上面的代码是有效的:
df$practice我得到了这个错误:df$Newyes,因为你没有给
ifelse
一个选项,如果
df$City
不是
Liverpool
的话,该选项应该怎么做……将你写的内容与我上面的评论进行比较……函数是
ifelse
。所以你应该像利物浦然后英格兰那样阅读你的代码,如果不是的话,那么是其他的东西。你没有提供其他东西。在我的示例中,注释中的其他内容是
“不是英格兰”
。有关详细信息,请键入
?ifelse
countrydf <- read.table(text= " City Country
                           Liverpool  England
                           Madrid     Spain
                           Milan      Italy
                           Istanbul   Turkey
                           Munich     Germany",header=TRUE,stringsAsFactors=FALSE)


merge(df,countrydf, by="City")
library(maps)
data(world.cities)
head(world.cities)

world.cities[world.cities$name == "Istanbul" ,]
df <- read.table(text="Date     City     Temp
1/1/2012 Liverpool  10
1/2/2012 Madrid     20
1/3/2012 Milan      40
1/4/2012 Istanbul   35
1/5/2012 Munich      10", header=TRUE)

city.countries <- list(England=c('Liverpool', 'London'), 
                       Spain='Madrid', 
                       Italy='Milan', 
                       Turkey='Istanbul', 
                       Germany='Munich')

df <- transform(df, Country = with(stack(city.countries), ind[match(City, values)]))
#       Date      City Temp Country
# 1 1/1/2012 Liverpool   10 England
# 2 1/2/2012    Madrid   20   Spain
# 3 1/3/2012     Milan   40   Italy
# 4 1/4/2012  Istanbul   35  Turkey
# 5 1/5/2012    Munich   10 Germany