我一直致力于合并和标准化多个调查数据集。我遇到的一个问题是标点符号的使用不一致。有时,研究使用标准'
进行编码,其他时间使用’
进行编码。
例如,法国象牙海岸的名称是科特迪瓦。不幸的是,数据在时间上没有统一编码。结果,当我运行交叉表时,我得到了这个:
country 2008 2009
------- ---- ----
Cote d'Ivoire 498 0
Cote d’Ivoire 0 502
我想要得到的是:
country 2008 2009
------- ---- ----
Cote d'Ivoire 498 502
当我尝试将这些标准化为使用'
而不是’
时,我绝对没有运气。它似乎没有做任何事情。这是我将使用的代码:
data$country[data$country == "Cote d’Ivoire"] <- Cote d'Ivoire
出于某种原因,我似乎无法弄明白这一点,这让我疯狂。有谁知道我做错了什么?
谢谢!
答案 0 :(得分:2)
您可以使用gsub
将值替换为其他值public class ListAdapter extends RecyclerView.Adapter<ListAdapter.ItemViewHolder> {
private final RecyclerView mLst;
//Runnable to scroll the recyclerview
private ScrollRunnable mScrollRunnable;
public ListAdapter(RecyclerView list) {
mLst = list;
}
class ItemViewHolder extends RecyclerView.ViewHolder {
private TextView mDescription;
ItemViewHolder(View itemView) {
super(itemView);
mDescription = itemView.findViewById(R.id.lblDescription);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mDescription.setVisibility(mDescription.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
//Let the textView to lay it out first and then tell the recyclerview to scroll it to position
if (mScrollRunnable == null)
mScrollRunnable = new ScrollRunnable();
mScrollRunnable.setScrollToIndex(getAdapterPosition());
mLst.postDelayed(mScrollRunnable, 300);
}
});
}
}
private class ScrollRunnable implements Runnable {
private int scrollToIndex = 0;
public void setScrollToIndex(int scrollToIndex) {
this.scrollToIndex = scrollToIndex;
}
@Override
public void run() {
mLst.smoothScrollToPosition(scrollToIndex);
}
}
}
如果它不起作用,您可能需要使用双反斜杠
来转义特殊字符data$country=gsub("’","'",data$country)
见